PDA

Показать полную графическую версию : [решено] Запуск bat файла


GuseV
07-11-2008, 09:31
Есть домен под Windows Server 2003х64 Enterprise.
Под него стоит UPS (Ippon). Для того чтобы сервак вырубился правильно, нужно написать исполняемый файл, который запустится перед выключением UPS. Вот беда, пишу файл
shutdown -s -f, расширение bat. Ну не запускаеться он, проскальзывает черненькое окно на 1 сек и исчезает. Причем пробовал запуск этого файла из totalcmander, тоже не запускаеться. А вот из обычного explorer запускается на ура. Как заставить файл запуститься нормально из под утилиты Ippon?

monkkey
07-11-2008, 09:37
cmd
pause

GuseV
07-11-2008, 09:48
Вот, создал батник test.cmd, там для примера написал shutdown -i, вот что получилось:


C:\temp>shutdown -i
'shutdown' is not recognized as an internal or external command,
operable program or batch file.

C:\temp>pause
Press any key to continue . . .

Я так понимаю что explorer у меня запускаеться в 64bit режиме, а total в 32bit, может поэтому?

Petya V4sechkin
07-11-2008, 11:23
GuseV, возможно, у вас испорчена системная переменная PATH. Проверьте раздел реестра "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment", тип параметра Path должен быть REG_EXPAND_SZ. Кривые инсталлеры некоторых программ (например MySQL) изменяют тип на REG_SZ, в результате командный процессор не может найти файлы в системных папках.

babki
07-11-2008, 11:57
А если VBS скриптом это сделать?
создай файл shutdown.vbs c содержимым:


CompName = inputBox("Введите имя ПК:")

Set objService = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\\" & CompName & "\root\CIMV2")
If Err.Number <> 0 Then
WScript.Echo Err.Number & ": " & Err.Description
WScript.Quit
End If
For Each objOS In objService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
Exit For
Next
'objOS.Reboot 'перезагрузка
objOS.Shutdown 'выключение
'objOS.Win32Shutdown 0 'Log Off
If Err.Number <> 0 Then
WScript.Echo Err.Number & ": " & Err.Description
WScript.Quit
End If

попробуй поэкспериментировать с ним...

А что если местонахождения файла указать напрямую с полным путем например "С:\WINDOWS\system32\shutdown.exe -s -f" или где там у Вас стоит система...

GuseV
07-11-2008, 12:02
Попробую со скриптом, хотя в VBS скриптах не бум-бум.
На счет HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" »
прописал путь до файла, не в этом дело точно. Тут точно нужно копать в сторону версий 64 и 32.

GuseV
07-11-2008, 12:28
Господа, решил проблемму таким способом:
Скопировал файл shutdown.exe с WinXP на сервер, в папку с исполняемым файлом. Написал в cmd:

shutdown.exe
shutdown -s -f

Все :oszone:




© OSzone.net 2001-2012