递归运行命令并检查它是否存在

时间:2011-01-20 17:07:16

标签: windows batch-processing

在Windows环境中,我试图找到一种方法来递归检查dirtree中的所有文件,看看它们的文件名/大小是否与另一个目录中的文件列表匹配,如果它们确实存在于目录中,那么它在找到的文件上运行命令

Psudocode:

Loop{
If(RecursivelyFindFiles() = FileInFileListingInResources()) {

DoCommand(cmd1 -D -R -N %FoundFile C:\resources\%Filename)

}

}

我知道自己想要什么,只是不知道如何在Windows环境中进行操作

2 个答案:

答案 0 :(得分:1)

@echo off
for /r %root% %%f in (*.*) do if exist ..\folder\%%~nxf call :furthertests %%f folder\%%~nxf
goto :eof

:furthertests
echo %1 found
if not "%~z1"=="%~z2" goto :eof
echo file sizes match (%~z1 bytes)
@rem Do your stuff with %1 here
@rem ...

假设%root%是搜索树的开头,..\folder\包含原型文件。

答案 1 :(得分:0)

这是一个开始!

@echo off
rem %1 First folder
rem %2 Other folder to compare
FOR /R %1 IN (*.*) DO echo %%G
echo Done!

而不是echo %%G,您可以调用fc %%G ABC这是一个filecompare exe。但我不知道如何格式化 ABC 作为文件夹2(%2)的路径+ %% G的基本文件名。
之后,对if的结果进行fc测试,您可以致电处理。

对不起,我承认我必须到此为止!