2015-12-22 22 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