fc循环遍历文件以查看是否有任何文件匹配

时间:2017-11-22 17:16:04

标签: loops batch-file

我的目标是将一个txt文件的内容与特定文件夹中所有文本文件的内容进行比较,如果 ANY txt文件匹配,那么如果没有匹配则执行一组进程然后执行另一套。

我尝试过以下操作:

@echo off
:main
fc "C:\Users\degibson\Desktop\test\*.txt" "C:\Users\degibson\Desktop\test2\temp1.txt" > NUL
if errorlevel 1 goto error

:next
echo do some important task
pause

:error
echo do some other important task
pause

问题 - 仅当所有文件与temp1.txt内容匹配时才有效。

有没有更好的方法来完成这项任务?

1 个答案:

答案 0 :(得分:0)

您可以使用FOR命令迭代目录中的所有文本文件。然后我建议您使用CALL命令而不是GOTO,因为CALL将返回执行FOR命令,而GOTO将打破FOR命令执行。执行返回FOR命令,使用内置:EOF标签结束当前调用的进程。您也可以使用EXIT /B

@ECHO OFF

:main
FOR %%G IN (C:\Users\degibson\Desktop\test\*.txt) DO (
    fc "%%G" "C:\Users\degibson\Desktop\test2\temp1.txt" >NUL
    if errorlevel 1 (
        CALL :error
    ) ELSE (
        CALL :next
    )
)
GOTO :EOF
:next
echo do some important task
pause
GOTO :EOF

:error
echo do some other important task
pause
GOTO :EOF