2015-12-22 56 views
0

正如我上面所述Psshutdown拒絕在批處理文件中工作,但在命令提示符下正常工作。該腳本具有一些明確的邏輯來確定什麼樣的PC組等。這裏是腳本: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 

每次我運行個人電腦邏輯或列表邏輯提示符只顯示我psshutdown語法使用。我已經嘗試過在互聯網上可以找到的所有語法配置。有什麼想法嗎?

編輯:值得注意的是,我使用的@file語法幾乎與psexec逐字地一起工作。

回答

0

兩件事情對我而言非常重要。如果你的文件名有空格,那會產生你提到的結果。嘗試在文件路徑中加引號。

我也無法理解行尾的「else」聲明。那是一個錯誤嗎?它應該與下面的行一起使用。

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

如果列表不存在,那麼邏輯將停止「else」。無論如何,它會運行「goto:SKIP」,所以我放棄了它。我打算在粘貼之前刪除它。 文件名中沒有空格。使用沒有空格的PC名稱時結果相同。它似乎不喜歡關於批處理文件本身的東西,因爲在cmd提示符下運行完全相同的命令可以正常工作。 – SergeantDoc

+0

嗯。這很奇怪。只是猜測在這裏,但你有沒有嘗試啓用延遲變量擴展?我想知道這是否會影響psshutdown如何通過計算機循環。 – Jared