Пакетный файл для выключения компьютера через удаленный рабочий стол в Windows XP - PullRequest
1 голос
/ 31 августа 2011

У меня есть рабочая станция с 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" и нажму enter, пакетный файл завершится, и аппарат не выключится.

Есть ли у кого-нибудь мысли, советы или предложения?Проблема не имеет большого значения, но теперь мне просто любопытно ...

РЕДАКТИРОВАТЬ: Было предложено попробовать использовать символ "-" для обозначения переключателя вместо "/».Это производит то же самое поведение.Однако интересно то, что я могу запустить следующую команду в командной строке с рабочей станции XP, чтобы правильно начать отключение из командной строки:

shutdown -s

Я попытался использовать ключ / m из моего Vistaрабочая станция, и командная строка, которая появляется при двойном щелчке командного файла, завершается, как только выдается команда выключения.Когда я пытаюсь запустить команду shutdown с ключом / m из командной строки, я получаю следующий вывод:

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

Ответы [ 2 ]

3 голосов
/ 31 августа 2011

В своем первом фрагменте кода вы использовали / для переключателей вместо -.Поскольку вы подключены к компьютеру удаленно, все, что вам нужно сделать, это указать код следующим образом:

shutdown -s -f

Если вам разрешено отправлять удаленные команды на компьютер, вместо использования удаленного рабочего стола для ручногоДля доступа к машине вы можете ввести следующую команду в ВАШЕЙ командной строке, а не на удаленном компьютере:

shutdown -s -f -m \\computername

РЕДАКТИРОВАТЬ:

Чтобы создать приглашение DOS для завершения работы через BATCH SCRIPT:

: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
0 голосов
/ 01 сентября 2011

Попробовав несколько разных вещей, вот решение, с которым я в итоге остановился:

Я создал ярлык выключения на компьютере с XP, щелкнув правой кнопкой мыши на рабочем столе и введя следующее в качестве нового ярлыкапуть:

shutdown -s

Как я уже упоминал в этом вопросе, я хотел обеспечить отказоустойчивость на случай случайного начала выключения.Поскольку ОС выдает 30-секундный таймер после ввода команды выключения с помощью вышеуказанного ярлыка, я решил создать ярлык прерывания:

shutdown -a

РЕДАКТИРОВАТЬ

Mechaflash при условиирабочий раствор.Изучив разницу между его сценарием и моим исходным предложением для сценария Y / N, я понял, что в моем сценарии есть опечатка: GOTO для условия Y указывает на раздел, который не существует!Я сделал несколько небольших изменений в его источнике, поэтому я использую его сегодня:

@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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...