Войти

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


Glamorama
06-10-2009, 18:54
Необходимо на удаленной машине запустить некий процесс с параметрами. Экспериментировал с архивированием, параметры - имена исходного файла и архива.

Сделал через wmic:

wmic /user:"Админ" /password:"123" /node:"srv" process call create "c:\progra~1\7-zip\7z a C:\tst.7z C:\tst.bak"

Работает.

Пишу батник to7z.bat вида :

c:\progra~1\7-zip\7z a C:\tst.7z C:\tst.bak

Запускаю опять же через wmic:
wmic /user:"Админ" /password:"123" /node:"srv" process call create "c:\to7z.bat"

Работает.

Изменяю батник на :

c:\progra~1\7-zip\7z a C:\%1.7z C:\%2.bak

Проверяю локально на srv:
c:\to7z tst tst
Все работает отлично.

Пробую через wmic

wmic /user:"Админ" /password:"123" /node:"srv" process call create "c:\to7z.bat tst tst"

Не работает (не происходит архивация). Хотя батник точно запускается (проверял, добавляя в батник строку time /t >c:\log.txt).

Вопрос - как победить такую оказию?

amel27
07-10-2009, 03:32
Не работает (не происходит архивация). Хотя батник точно запускается (проверял, добавляя в батник строку time /t >c:\log.txt). »
нормально всё работает, для проверки вместо TIME используйте:
Echo c:\progra~1\7-zip\7z a C:\%1.7z C:\%2.bak >c:\log.txt
c:\progra~1\7-zip\7z a C:\%1.7z C:\%2.bak >>c:\log.txt 2>&1

Glamorama
07-10-2009, 10:46
Вредно работать по вечерам.
Проблема оказалась в том, что wmic не запускает батники без указания расширения, то есть вызов "to7z" не сработает, а вот "to7z.bat" отрабатывает как надо.

А по поводу того, что батник запускается - это я с путями ошибся при передаче параметров.

Iska
07-10-2009, 11:12
Glamorama, сам wmic.exe тут не при чём. Дело в методе «.Create» класса «Win32_Process», который, я полагаю, в конечном итоге, реализуется функцией WinAPI «CreateProcess» — с соответствующими ограничениями:
Parameters
lpApplicationName

The string can specify the full path and file name of the module to execute or it can specify a partial name. In the case of a partial name, the function uses the current drive and current directory to complete the specification. The function will not use the search path. If the file name does not contain an extension, .exe is assumed. Therefore, if the file name extension is .com, this parameter must include the .com extension.

To run a batch file, you must start the command interpreter; set lpApplicationName to cmd.exe and set lpCommandLine to the name of the batch file.




© OSzone.net 2001-2012