Batch file Psshutdown在批处理文件中不工作

Batch file Psshutdown在批处理文件中不工作,batch-file,Batch File,如上所述,Psshutdown拒绝在批处理文件中工作,但在命令提示符下工作良好。脚本有一些简单的逻辑来确定什么样的PC组等等。以下是脚本: @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

如上所述,Psshutdown拒绝在批处理文件中工作,但在命令提示符下工作良好。脚本有一些简单的逻辑来确定什么样的PC组等等。以下是脚本:

@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逻辑或列表逻辑时,提示符仅显示psshutdown语法使用的内容。我已经尝试了在互联网上找到的每种语法配置。有什么想法吗


编辑:值得注意的是,我使用的@file语法与psexec几乎一字不差。

有两件事我很清楚。如果文件名中有空格,则会产生您提到的结果。尝试在文件路径周围加引号

我也不明白你那句话末尾的“else”是什么意思。那是个错误吗?它应该与下面的行一起工作

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

“else”是在列表不存在时停止命令的逻辑中留下的。不管怎样,它都会运行“goto:SKIP”,所以我放弃了它。我想在粘贴之前删除它。文件名中没有空格。使用同样没有空格的PC名称时,结果相同。它似乎不喜欢批处理文件本身,因为在cmd提示符下运行完全相同的命令可以正常工作。真奇怪。这里只是猜测一下,但是您是否尝试过启用延迟变量扩展?我想知道这是否会影响PSShuttdown在计算机中的循环。