1、如果你是想比较两个文件,可以使用系统自带的命令行程序fcexe,另外UltraEdit等编辑器也具有比较文件的功能;
2、如果你是想比较两个文件夹,Win98安装光盘提供了windiffexe,可以在窗口方式下比较两个文件夹的内容;WinXP增强工具集中则提供了命令行方式的bindiffexe;而第三方工具TotalCmd等资源浏览器也提供文件夹比较的功能;
3、如果限定使用批处理解决问题,可以参考我过去编写的一个小程序,在
WinXP CMD下运行通过。需要提及的是,为了程序的运行效率考虑,对同名的不同文件没有进行内容上的比较,而只是比较了文件的属性、大小和修改日期,这当然是不全面的,但应该可以满足日常的需要。
--------------------------------------------------------------
:: CompDircmd - Compare files in two directories
:: Will Sort - 19:40 2005-12-23 - CMD@WinXP
@echo off & setlocal EnableDelayedExpansion
if not "%2"=="" goto Start
:Help
echo CompDircmd - Compare files in two directories
echo Usage: %0 [/f] dir1 dir2 [FileSpec]
echo
/f
Compare time/size/attrib of file
echo
filespec Specific files by wildcard of filename
goto :EOF
:Start
if /i "%1"=="/f" shift && set _CompFile=on
if "%3"=="" (set filespec=) else set filespec=%3
for /r %~f1 %%f in (%filespec%) do (
set file=%%~ff
set file=!file:%~f1\\=!
if not exist "%~f2\\!file!" echoOnly in 1: !file!
)
for /r %~f2 %%f in (%filespec%) do (
set file=%%~ff
set file=!file:%~f2\\=!
if not exist "%~f1\\!file!" echo Only in 2: !file!
)
if not "%_CompFile%"=="on" goto :EOF
echo Compare Time/siZe/Attrib of file
echo Press Ctrl+C to Quit
for /r %~f1 %%f in (%filespec%) do (
set file=%%~ff
set file=!file:%~f1\\=!
if exist "%~f2\\!file!" for %%g in ("%~f2\\!file!") do (
if "%%~tf" NEQ "%%~tg" echo !file! Time 1"%%~zf" NEQ 2"%%~zg">>"%temp%\\_CompFiletmp"
if "%%~zf" NEQ "%%~zg" echo !file! Size 1"%%~zf" NEQ 2"%%~zg">>"%temp%\\_CompFiletmp"
if "%%~af" NEQ "%%~ag" echo !file! Attrib 1"%%~zf" NEQ 2"%%~zg">>"%temp%\\_CompFiletmp"
)
)
if exist "%temp%\\_CompFiletmp" del "%temp%\\_CompFiletmp"
--------------------------------------------------------------
@echo off
set "bf=1txt"
(for /f "usebackq tokens=1-2" %%a in ("%bf%") do (
findstr /r "%%b\>" "D:\新建文件夹\txt" >nul&&if %%b gtr 500000 (echo +%%b) else echo -%%b))>>resulttxt
pause
将要用于查找的文件(1txt)和批处理放在一起,也可设置1txt路径将1txt和要查找的文件分开存放,这样代码执行更有效率下面的代码可以直接将批处理和要查找的文件放在一起使用
@echo off&setlocal enabledelayedexpansionset "bf=1txt"
(for /f "usebackq tokens=1-2" %%a in ("%bf%") do (set n=
for /f "delims=" %%i in ('dir /a-d/b txt^|findstr /vr "%bf%\>"') do (
findstr /r "%%b\>" "%%i" >nul&&(set /a n+=1))
if !n! gtr 0 (if %%b gtr 500000 (echo +%%b) else echo -%%b)))>>resulttxt
pause
看似简单写了两天,好晕:
@ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "TOKENS=1 DELIMS= " %%I IN (CTXT) DO (
SET "_FOO=%%~I"
IF NOT DEFINED !_FOO! (SET !_FOO!=STR
) ELSE (SET !_FOO!=_FOO)
)
FOR /F "TOKENS=" %%A IN (CTXT) DO (
SET "_VAR=%%~NA"
SET _VAR=!_VAR:~,4!
IF DEFINED !_VAR! ECHO %%~NA>>!_VAR!TXT
)
EXIT
效率不算高,自己先测试一下吧。
@echo off
for /f "tokens=1 delims= " %%a in (atxt) do (
setlocal enabledelayedexpansion
call :loop "%%a" "m"
call :loop "%%b" "h"
echo !m:=! !h:=!
endlocal
)
pause
:loop
for /f "tokens=1 delims=" %%i in ("%~1") do (
set /a n=1%%i-1000
set "%~2=!%~2!!n!"
if not "%%j"=="" call :loop "%%j" "%~2"
)
goto :eof
@ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION
:lp
if "%1"=="" (
set /p file=请拖入需要修改的歌词文件:
) else (
set "file=%1"
)
if not exist %file% (echo,%1文件不存在&pause>nul&goto :eof)
:lp2
if "%2"=="" (
set /p ofset=请输入时间调整值,提前加-号,单位毫秒:
) else (
set ofset=%2
)
set /a 1/ofset 2>nul||(echo,调整值有误,退出&pause>nul&goto :eof)
for %%k in (%file%) do set newfile="%%~k_new"&cd>!newfile!
for /f "usebackq delims=" %%i in ("%file%") do (
set "str=%%i"
if not "!str!"=="!str::=!" (
set "str=!str::=#@!"
set "str=!str:=#@!"
set "str=!str:[=#@!"
set "str=!str:@0=!"
for /f "tokens=1-3 delims=@]#" %%a in ("!str!") do (
set /a time=%%c 10 + %%b 1000 + %%a 60000 + ofset,t1=time/60000 + 100,t2=time %% 60000 / 1000 + 100 ,t3=time %% 1000 + 1000 2>nul&&(
echo,[!t1:~-2!:!t2:~-2!!t3:~1,2!]%%d>>!newfile!
) || (
echo,%%i>>!newfile!!
)
)
) else (
echo,%%i>>!newfile!
)
)
del %file%
ren %newfile% %file%
rem 使用方法
rem LrcTimebat "d:\test\歌词lrc" -340 ,将歌词lrc 提前340毫秒。
rem 或者直接双击打开, 将歌词lrc拖到BAT窗口,然后输入调整时间。
摩托车 三轮车 小轿车
1 6 4
2 4 5
3 2 6
设摩托车。三轮车。小轿车分别有X Y Z 辆
总辆数为11 总轮子数为 36 ,所以
X + Y + Z = 11
2X + 3Y + 4Z = 36
三元一次方程。解出来就行了
或者用记事本编写一个小程序,保存为bat文件 ,运行下就行了
@echo off& setlocal enabledelayedexpansion
echo 摩托车 三轮车 小轿车
for /l %%1 in (1 1 11)do for /l %%2 in (1 1 11)do for /l %%3 in (1 1 11)do (set /a car=%%1+%%2+%%3,wheel=2%%1+3%%2+4%%3
if !car!==11 if !wheel!==36 echo %%1 %%2 %%3)
pause>nul
以上就是关于请问怎样用BAT(批处理)编写两个文件夹内容进行比较全部的内容,包括:请问怎样用BAT(批处理)编写两个文件夹内容进行比较、批处理比对多文本文件的 找出相同内容另存为一个文本、紧急求助 编写一个对txt文件读取的小程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)