我有一个批处理文件,如下所示;
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