Пакетный скрипт - не будет продолжаться после FOR-Loop - PullRequest
1 голос
/ 02 октября 2019

Я получил Startup-Script, который закрывает и открывает некоторые службы и, в конце концов, открывает процесс на рабочем столе. Имя иконки на рабочем столе может быть переменным, поэтому мы использовали цикл FOR. В любом случае, поскольку мы добавили цикл FOR, он не закроет скрипт. Это похоже на зависание в цикле for, но когда я пробую цикл 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 голосов
/ 02 октября 2019

Это может происходить по большому количеству причин.

Это даже со мной происходит: команда dir /b %HOMEPATH%\Desktop\*, похоже, не возвращается на мою машину прямо сейчас. Это потому, что моя переменная %HOMEPATH% установлена ​​на \, поэтому команда расширяется до dir /b \\Desktop\*, и нет машины с именем Desktop, поэтому кажется, что она зависает при истечении времени ожидания.

Вы можетеспросите, почему мой %HOMEPATH% установлен на \? Ну, это потому, что мой %HOMEDRIVE% установлен на Y:, общий сетевой ресурс, поэтому %HOMEDRIVE%%HOMEPATH% расширяется до Y:\, что является намерением.

Итак, что мы извлекаем из этого?

Либо всегда используйте %HOMEPATH% вместе с %HOMEDRIVE%, либо просто используйте %USERPROFILE%.

Кроме того, всегда заключайте пути в двойные кавычки, в противном случае пробелы вызовут хаос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...