【问题标题】:Batch file to shutdown computer through remote desktop in Windows XP在 Windows XP 中通过远程桌面关闭计算机的批处理文件
【发布时间】:2011-11-07 18:10:03
【问题描述】:

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

我决定创建一个在使用远程桌面进入 Windows XP 机器时关闭它的批处理文件。重要的是它有某种提示,以防我不小心从桌面单击它。

这是批处理文件的来源:

pause

echo 1
shutdown /s /f
echo 2

但文件似乎在关闭命令处循环。这是批处理文件的输出:

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 开关,并且在发出关闭命令后,双击批处理文件时弹出的命令提示符立即退出。当我尝试从命令提示符本身使用 /m 开关运行关机命令时,我得到以下输出:

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

【问题讨论】:

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


    【解决方案1】:

    在您的第一个代码 sn-p 中,您将 / 用于开关而不是 - 。由于您是远程连接到机器,您需要做的就是指定代码如下:

    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
    

    【讨论】:

    • 您是否使用 - 而不是 / 来测试开关?我之前曾尝试过,根据您的建议,我决定再试一次作为健全性检查;它产生与原始问题相同的输出。作为记录,执行“关机-?”时的帮助文本或“关机/?”将开关显示为斜线。我还尝试了您建议将 -m 开关与 \\COMPUTERNAME 一起使用,这看起来很有希望……不幸的是,我收到了拒绝访问的消息,但否则我认为它可能会起作用。好主意。
    • 对于 windows XP 其 -。不确定远景。不过,我会为您编辑帖子以显示关机提示。
    • 您的脚本效果很好!它帮助我意识到我在使用的原始脚本中有错字。我做了一些调整(包括@ECHO OFF)并在我的答案中发布了生成的脚本。谢谢你的帮助,你摇滚!
    【解决方案2】:

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

    我在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
    

    【讨论】:

    • I'm a nub... 完全忘记了 /I 切换 IF blush
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    相关资源
    最近更新 更多