Запуск бат файла
Здравствуйте, есть такой бат файл:
Код:
if exist = "C:\settings and files\PC checked\1" start psexec \\192.168.56.1 -u Alexander -p 123456 -i "C:\settings and files\scripts\kill robot.exe" запускаю кнопкой button так: Код:
windows.WinExec('C:\settings and files\scripts\For all users\update robot.bat',windows.SW_NORMAL); |
Alexander_88, а где у Вас расположен psexec? А какой каталог является текущим для пакетного файла при его исполнении? Проверьте.
|
psexec находится в windows/system32
прога на delphi из которой хочу запустить батник C:\settings and files\ сам батник C:\settings and files\scripts\For all users Пробовал в батнике указать точный путь до psexec, но все равно не получается Код:
if exist = "C:\settings and files\PC checked\1" start C:\Windows\System32\psexec \\192.168.56.1 -u Alexander -p 123456 -i "C:\settings and files\scripts\kill robot.exe" Код:
if exist = "C:\settings and files\PC checked\1" start "" C:\Windows\System32\psexec \\192.168.56.1 -u Alexander -p 123456 -i "C:\settings and files\scripts\kill robot.exe" Код:
if exist = "C:\settings and files\PC checked\1" start C:\Windows\System32\psexec.exe \\192.168.56.1 -u Alexander -p 123456 -i "C:\settings and files\scripts\kill robot.exe" |
Alexander_88, на всякий случай — какой разрядности у Вас ОС, и какой разрядности у Вас Delphi? И уберите уже, наконец, этот чёртов знак равенства :).
|
равенства нету, я его со старого батника нечайно скопировал)
delphi 7 build 4.4.53.......... 32 битная.. я проект создаю с ОС х64 windows 10 а запускаю на windows server 2016 x64 бит но вроде system32 папка на 32 и 64 разрядностях находятся по одному пути, или нет? другие батники нормально запускаются и работают, только вот где psexec надо запустить, тот батник не хочет работать может Код:
windows.WinExec('C:\settings and files\scripts\For all users\update robot.bat',windows.SW_NORMAL); |
Цитата:
Давайте предположим, что дело может быть в этом (я не проверял, у меня нет Delphi). Попробуйте либо положить psexec.exe в каталог SysWOW64, либо указать путь к x64'ному каталогу System32 в виде специального псевдонима SysNative вместо System32. Вообще же касательно WinExec() — Блог GunSmoker-а: Почему вам (никогда) не следует использовать ShellExecute и WinExec. |
Вы были правы, скопировал файл psexec.exe в папку SysWOW64 и заработало :)
|
Цитата:
"SysNative", в x64 - не настоящая папка, это проекция на 32-х или 64-х битную папку - в зависимости от вызывающего процесса. Рекомендуемый механизм при доступе из 32-разрядного приложения в системные папки Windows x64, реализован самой ОС: %systemroot%\sysnative\ - 64-разрядные библиотеки, по факту лежащие в %systemroot%\system32\ %systemroot%\system32\ - 32-разрядные библиотеки, по факту лежащие в %systemroot%\SysWOW64\ При разработке приложения, необходимо определить разрядность ОС и в зависимости от результата перенаправлять запросы или в "System32", или в "SysNative". |
Цитата:
|
Цитата:
пишу уже о "System32"Исправил! |
opel431, ясно, бывает. Я сам такой ;).
|
Время: 10:27. |
Время: 10:27.
© OSzone.net 2001-