2014-02-20 3 views
0

Я пытаюсь сделать командный файл Windows, который excecute команды и передать ему параметр потока, который принимается как параметр пакетного файла, тогда мне нужно получить вывод этого выполнения и сделать что-то с ним перед отправкой его на пакетный вывод (вырезание вывода для получения только первого символа). Это то, что я до сих пор:Выполнение команды, получение вывода и использование его

for /f %%i in ('"C:\Program Files (x86)\JAM Software\SpamAssassin for Windows\spamc.exe" < %1') do set RES2 = %%i 
ECHO %RES2~0,1% 

Но это не работает, как я ожидал. Спасибо за помощь.

+0

Вам не хватает **: ** % RES2: ~ 0,1% –

+0

Я не понимаю, что вы имеете в виду, я этого не замечаю. :) – yosbel

+0

У вас есть недопустимый синтаксис. Вы должны иметь '% RES2: ~ 0,1%' Обратите внимание на **: ** перед ** ~ **. –

ответ

0
for /f %%i in (
    '"C:\Program Files (x86)\JAM Software\SpamAssassin for Windows\spamc.exe" ^< %1' 
) do set RES2=%%i 
ECHO %RES2:~0,1% 

В вашем коде три изменения. Двоеточие в эхо-строке (необходимо, это часть синтакса), экранированное перенаправление и пробелы, удаленные вокруг знака равенства в заданной строке. С пробелами имя переменной содержит пробел, а значение внутри переменной также имеет пробел в нем (и оно будет первым, поэтому последующая команда эха не будет выполнена)

+0

первое спасибо за ответ, у меня все еще есть проблемы. Например, я должен положить символ^до yosbel

+0

@yosoy, извините, пропустил это. Используйте '' call 'c: \ Program Files .... "', и да, оператору переадресации следует экранировать. –

+0

большое спасибо !!!, теперь он работает, я сделал то, что вы посоветовали, и просто добавьте некоторые параметры, которые я пропустил, и он работает! :) – yosbel

Смежные вопросы