批处理文件,通过Windows XP中的远程桌面关闭计算机

时间:2011-08-31 15:55:00

标签: batch-file windows-xp remote-desktop shutdown

我有一个大部分时间都使用的Windows Vista工作站,但我偶尔需要远程桌面进入Windows XP工作站。由于分辨率的差异,我的远程桌面会话中的开始菜单是不可见的,除非我全屏(我喜欢避免,所以我仍然可以看到我的Vista工作站上的开始菜单和通知托盘)或滚动到底部(但我很懒!)。

我决定创建一个批处理文件,以便在使用远程桌面时关闭Windows XP计算机。重要的是,如果我不小心从桌面上点击它,它会有某种提示。

这是批处理文件源:

pause

echo 1
shutdown /s /f
echo 2

然而该文件似乎在shutdown命令循环。这是批处理文件的输出:

C:\Documents and Settings\Kiley\Desktop>pause
Press any key to continue . . .

C:\Documents and Settings\Kiley\Desktop>echo 1
1

C:\Documents and Settings\Kiley\Desktop>shutdown /s /f

C:\Documents and Settings\Kiley\Desktop>pause
Press any key to continue . . .

它似乎一遍又一遍地循环。我已经搜索了这个问题,希望这是一个解决方法的常见问题,但我似乎无法找到解释。我也尝试过使用/ t开关(指定时间),以及在关机后立即执行退出命令,它似乎总是产生与上面相同的行为。

我也尝试创建类似但不同的批处理文件,如此......

@ECHO OFF

:choice
set /P c=SHUTDOWN[Y/N]?
if /I "%c%" EQU "Y" goto :do_shutdown
goto :choice


:somewhere

shutdown -s -f

但是只要输入“y”并按回车键,批处理文件就会退出,机器也不会关机。

有没有人有任何想法,建议或建议?问题不重要,但现在我只是好奇......

修改 有人建议我尝试使用“ - ”字符来表示开关而不是“/”。这会产生相同的行为。但是,有趣的是我可以在XP工作站的命令提示符中运行以下命令,从命令提示符正确地开始关闭:

shutdown -s

我尝试使用vista工作站上的/ m开关,双击批处理文件时弹出的命令提示符会在发出shutdown命令后立即退出。当我尝试从命令提示符单独使用/ m开关运行shutdown命令时,我得到以下输出:

C:\Windows\system32>shutdown /s /f /m \\WORKSTATION-V5
WORKSTATION-V5: Access is denied.(5)

2 个答案:

答案 0 :(得分:3)

在您的第一个代码段中,您使用/代替 - 而不是 - 。由于您远程连接到机器,因此您需要做的就是按如下方式指定代码:

shutdown -s -f

如果允许向计算机发送远程命令,而不是使用远程桌面手动访问计算机,则可以在您的命令行中键入以下命令,而不是远程计算机:

shutdown -s -f -m \\computername

编辑:

通过BATCH SCRIPT创建关闭的DOS提示符:

:START
SET /p sd=Would you like to shutdown? [ Y ] or [ N ]     :
IF "%sd%"=="Y" GOTO:SHUTDOWN
IF "%sd%"=="y" GOTO:SHUTDOWN
IF "%sd%"=="n" GOTO:EOF
IF "%sd%"=="N" GOTO:EOF
ECHO Incorrect Answer... Please Try Again
PAUSE
GOTO:START
:SHUTDOWN
shutdown -s

答案 1 :(得分:0)

在尝试了几件不同的事情之后,这是我最终解决的解决方案:

我在XP机器上创建了一个关机快捷方式,方法是右键单击桌面并输入以下内容作为新的快捷方式路径:

shutdown -s

正如我在问题中所提到的,如果我不小心开始关机,我想要一个故障保护。由于操作系统通过上面的快捷方式输入关机命令后给出30秒计时器,我决定创建一个中止快捷方式:

shutdown -a

修改

Mechaflash 提供了一个有效的解决方案。在回顾了他的脚本和我原来的Y / N脚本提示之间的区别之后,我意识到我的脚本中有一个拼写错误:Y条件下的GOTO指向一个不存在的部分!我对他的来源做了一些修改,所以这就是我今天使用的:

@ECHO OFF
:START
SET /p sd=Would you like to shutdown? [y to continue]     :
IF /I "%sd%"=="y" GOTO:SHUTDOWN
GOTO:EOF

:SHUTDOWN
shutdown -s