我有一个启动脚本,该脚本确实关闭并打开一些服务,最后在桌面上打开一个进程。桌面图标的名称可以是可变的,因此我们在此处使用了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
)
答案 0 :(得分:0)
由于多种原因,这可能发生。
实际上甚至发生在我身上:命令dir /b %HOMEPATH%\Desktop\*
似乎现在不在我的机器上返回。这是因为我的%HOMEPATH%
变量设置为\
,所以命令扩展为dir /b \\Desktop\*
,并且没有名为Desktop
的计算机,因此它在超时时似乎挂起。
您可能会问,我的%HOMEPATH%
为何设置为\
?好吧,这是因为我的%HOMEDRIVE%
设置为网络共享Y:
,所以%HOMEDRIVE%%HOMEPATH%
扩展到了Y:\
。
那么,我们从中学到什么?
要么总是将%HOMEPATH%
与%HOMEDRIVE%
一起使用,要么仅使用%USERPROFILE%
。
此外,请始终将路径用双引号引起来,否则空格将造成严重破坏。