我正在尝试编写一个简单的批处理来检查文件,如果它存在则转到最后。如果文件不存在,则执行概述的任务。批处理应该正常工作,但是,它似乎忽略了“IF EXIST”部分的文件并且每次都重写SIP-Dir.txt。希望它能看到该文件并退出任何进一步的操作。我不是脚本编写者,但我多次使用这样的小文件。任何帮助,将不胜感激。如果我的语法不正确,请告诉我它应该是什么。
@echo off
IF EXIST %temp%\SIP-Dir.txt goto SKIP
TASKKILL /F /IM Communicator.exe
cd %LocalAPPData%\Microsoft\communicator
for /d %a in (sip*) do rd /s /q "%a"
Echo SIP DEL Complete > %temp%\SIP-Dir.txt
:SKIP
答案 0 :(得分:1)
您可能会发现路径中的空格会影响这一点。试试下面的引用:
如果文件不存在,则在测试期间将触发第一个暂停。稍后将其删除。
for
命令也已更改,以便在CD
命令失败时阻止随机文件夹被删除,并在批处理文件中使用时修复变量名中的一些错误。< / p>
IF EXIST "%temp%\SIP-Dir.txt" goto SKIP
pause
TASKKILL /F /IM Communicator.exe
for /d %%a in ("%LocalAPPData%\Microsoft\communicator\sip*") do rd /s /q "%%a"
Echo SIP DEL Complete > "%temp%\SIP-Dir.txt"
:skip
echo done
pause
答案 1 :(得分:1)
if not exist "%temp%\SIP-Dir.txt" (
TASKKILL /F /IM Communicator.exe
for /d %%a in ("%localappdata%\Microsoft\communicator\sip*") do rd /s /q "%%~fa"
Echo SIP DEL Complete > "%temp%\SIP-Dir.txt"
)
在这种情况下,不需要goto
命令。而不是询问文件是否存在,检查文件是否不存在。
正如foxidrive所说,最好引用路径,特别是当变量用于构建它们时。