请问怎样用BAT(批处理)编写两个文件夹内容进行比较

请问怎样用BAT(批处理)编写两个文件夹内容进行比较,第1张

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 enabledelayedexpansion

set "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文件读取的小程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10091863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存