我有一个批处理文件,如下所示;

CD C:\MyFolder
findstr /c:"stringToCheck" fileToCheck.bat
IF NOT XCOPY "C:\OtherFolder\fileToCheck.bat" "C:\MyFolder" /s /y

尝试执行此操作时出现错误(“C:\ OtherFolder \ fileToCheck.bat”目前无法预料。)

请让我知道我在做什么错。

最佳答案

您没有评估IF的条件。我想如果您在fileToCheck中找到stringToCheck,则不希望复制。您需要做类似的事情(未经测试的代码,但是您知道了):

CD C:\MyFolder
findstr /c:"stringToCheck" fileToCheck.bat
IF NOT ERRORLEVEL 0 XCOPY "C:\OtherFolder\fileToCheck.bat" "C:\MyFolder" /s /y

编辑dbenham
上面的测试是错误的,它总是评估为FALSE。
正确的测试是IF ERRORLEVEL 1 XCOPY ...
更新:我无法测试代码,但是我不确定如果找不到任何内容,返回值findstr实际返回了什么。您可能需要执行以下操作:
CD C:\MyFolder
findstr /c:"stringToCheck" fileToCheck.bat > tempfindoutput.txt
set /p FINDOUTPUT= < tempfindoutput.txt
IF "%FINDOUTPUT%"=="" XCOPY "C:\OtherFolder\fileToCheck.bat" "C:\MyFolder" /s /y
del tempfindoutput.txt

07-24 09:52