2015-12-22 3 views
0

Как я уже говорил выше, Psshutdown отказывается работать в пакетном файле, но отлично работает в командной строке. В сценарии есть легкая логика, чтобы определить, какая группа ПК и т. Д. Вот сценарий:Psshutdown не работает в пакетных файлах

@ECHO OFF 
cd "C:\temp\remote enable rdp" 
goto :SET 

:SET 
set /p groupPC=pc or list?: 
if %groupPC% == pc goto :PC 
if %groupPC% == list goto :LIST 
goto :SKIP 

:PC 
ECHO[ 
set /p pcName=Which PC?: 
psshutdown -c -k \\%pcName% -r 
PAUSE 
goto :DONE 

:LIST 
ECHO[ 
set /p input=Which list?: 
set list=%input%.txt 
psshutdown @C:\Temp\Lists\%list% -r -f else goto :SKIP 
PAUSE 
goto :DONE 

:SKIP 
ECHO[ 
ECHO You probably typed something wrong. Starting from the top. 
PAUSE 
ECHO[ 
goto :SET 

:DONE 
ECHO Mischief Managed 
TIMEOUT /t 10 
EXIT /B 

Каждый раз, когда я бегу либо логику PC или логику List подсказка просто показывает мне синтаксис PsShutdown использует. Я пробовал каждую конфигурацию синтаксиса, которую я могу найти в Интернете. Есть предположения?

Редактировать: Стоит отметить, что синтаксис @file, который я использую, работает почти дословно с помощью psexec.

ответ

0

Две вещи выделяются мне. Если у вашего имени файла есть пробел, это даст результаты, о которых вы говорили. Попробуйте помещать кавычки вокруг пути к файлу.

Я также не могу понять утверждение «else» в конце вашей строки. Это была ошибка? Он должен работать с приведенной ниже строкой.

psshutdown @"C:\Temp\Lists\%list%" -r -f 
+0

«Осталось» от логики, которая остановила бы команду, если список не существовал. Так или иначе, он будет запускать «goto: SKIP», поэтому я его оставил. Я хотел удалить его перед вставкой. В имени файла нет пробелов. В результате используется имя ПК, которое также не имеет пробелов. Кажется, что что-то не похоже на сам пакетный файл, так как работа с той же командой в командной строке отлично работает. – SergeantDoc

+0

Хм. Это странно. Просто угадывая здесь, но попробовали ли вы включить замедленное расширение переменной? Интересно, влияет ли это на то, как psshutdown проходит через компьютеры. – Jared

Смежные вопросы