Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Запуск .BAT файла с параметрами через WMI (http://forum.oszone.net/showthread.php?t=152505)

Glamorama 06-10-2009 18:54 1236035

Запуск .BAT файла с параметрами через WMI
 
Необходимо на удаленной машине запустить некий процесс с параметрами. Экспериментировал с архивированием, параметры - имена исходного файла и архива.

Сделал через 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 1236463

Цитата:

Цитата Glamorama
Не работает (не происходит архивация). Хотя батник точно запускается (проверял, добавляя в батник строку 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 1236595

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

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

Iska 07-10-2009 11:12 1236619

Glamorama, сам wmic.exe тут не при чём. Дело в методе «.Create» класса «Win32_Process»,
читать дальше »
который, я полагаю, в конечном итоге, реализуется функцией WinAPI «CreateProcess» — с соответствующими ограничениями:
Цитата:

Цитата Platform SDK
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.



Время: 07:02.

Время: 07:02.
© OSzone.net 2001-