在批处理文件中使用“如果存在/转到”

时间:2014-04-30 16:38:56

标签: windows batch-file

我正在尝试编写一个简单的批处理来检查文件,如果它存在则转到最后。如果文件不存在,则执行概述的任务。批处理应该正常工作,但是,它似乎忽略了“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

2 个答案:

答案 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所说,最好引用路径,特别是当变量用于构建它们时。