1

У меня есть команда wmic, которая узнает PID моего процесса и прекрасно работает из cmd, но отказывается выдавать вывод при выполнении в bat-файле:

wmic /output:process.pid process where (Name like '%java%' and commandLine like '%part-of-the-path%') get ProcessId

Когда я запускаю его из cmd, он выдает файл, содержащий

ProcessId
19352

Информация сопровождается двумя пустыми строками. Когда я запускаю его из пакетного файла, он создает только файл с двумя пустыми строками.

Я пробовал /output:filename , > filename и | more > filename , все с одинаковым результатом.

Почему это? Как заставить команду выводить данные из пакета?

1 ответ1

2

Как и большинство языков программирования, пакетный файл также содержит escape-символы. Знак % используемый в командной строке, является escape-символом в командном файле и придает команде другое значение. На самом деле он ищет переменную с именем %java% .

Чтобы решить эту проблему, используйте %% вместо % в командном файле. Чтобы увидеть больше деталей и информации о других escape-персонажах, смотрите здесь.

Следующая команда должна работать в командном файле.

wmic /output:process.pid process where (Name like '%%java%%' and commandLine like '%%part-of-the-path%%') get ProcessId

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .