我需要使用Batch命令比较两个文件夹。这两个文件夹都包含子目录和文件。比较必须检查每个文件。如果存在任何差异,例如,如果我们要比较folder1
和folder2
,file1
中存在folder1
,但folder2
中不存在true
,然后它必须返回false
(这样我才能做其他操作),否则passport.authenticate('bearer', {session: false})
。
我实际上正在从一个文件夹到另一个文件夹进行复制。一旦完成,我需要验证是否所有文件都被复制了。
注意:我不能使用任何第三方工具。
答案 0 :(得分:2)
@echo off
REM Writing the folder tree to a file for each path
pushd "Folder 1"
for /f "delims=" %%c in ('tree /f') do >>"%~dp0folder1.txt" echo "%%c"
popd
pushd "Folder 2"
for /f "delims=" %%d in ('tree /f') do >>"%~dp0folder2.txt" echo "%%d"
popd
REM removing the first three lines from each of the two files
more +3 "folder1.txt" >"folder1.txt.new"
move /y "folder1.txt.new" "folder1.txt" >nul
more +3 "folder2.txt" >"folder2.txt.new"
move /y "folder2.txt.new" "folder2.txt" >nul
REM comparing files
fc /b folder1.txt folder2.txt>nul && echo same || echo different
REM cleaning up
del folder1.txt
del folder2.txt
只要文件夹位于同一驱动器上,就应该可以正常工作。将目录更改为第一个文件夹,并将命令树的输出打印到一个文件,并将其输出到另一个文件夹
然后比较/b
inary f ile c omparison并输出same
如果命令的输出和文件夹相同。如果不是,则输出different
删除后的两个帮助文件。
注意:如果您已有包含该名称的文件,请进行更改!
随意询问是否有不明确的事情:)
编辑:删除前3行以防止基于Volume-Number / Drive-Letter的比较效果。对于删除方式的信用转到dbenhams answer另一个问题。