批处理脚本-FOR-Loop之后将无法继续

时间:2019-10-02 06:44:39

标签: windows batch-file cmd

我有一个启动脚本,该脚本确实关闭并打开一些服务,最后在桌面上打开一个进程。桌面图标的名称可以是可变的,因此我们在此处使用了FOR-Loop。无论如何,由于我们添加了FOR-Loop,它不会关闭脚本。看起来好像它挂在了for循环中,但是当我仅在testcript中尝试for循环时,它将在之后(但不在我的原始脚本中)关闭脚本。

tasklist |find /i "pxTel.exe" >nul
if %errorlevel% == 1 (
echo [32mStarte Programm Telefon Integration... Alles in Ordnung![0m
FOR /f "tokens=*" %%G IN ('dir /b %HOMEPATH%\Desktop\pxTel*') DO %HOMEPATH%\Desktop\%%G
timeout 3
) else (
echo [32mProgramm Telefon-Integration laeuft bereits... ueberspringe..[0m
)

1 个答案:

答案 0 :(得分:0)

由于多种原因,这可能发生。

实际上甚至发生在我身上:命令dir /b %HOMEPATH%\Desktop\*似乎现在不在我的机器上返回。这是因为我的%HOMEPATH%变量设置为\,所以命令扩展为dir /b \\Desktop\*,并且没有名为Desktop的计算机,因此它在超时时似乎挂起。

您可能会问,我的%HOMEPATH%为何设置为\?好吧,这是因为我的%HOMEDRIVE%设置为网络共享Y:,所以%HOMEDRIVE%%HOMEPATH%扩展到了Y:\

那么,我们从中学到什么?

要么总是将%HOMEPATH%%HOMEDRIVE%一起使用,要么仅使用%USERPROFILE%

此外,请始终将路径用双引号引起来,否则空格将造成严重破坏。