2015-09-04 5 views
0

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

То, что я попытался это:

for %%f in (mathml*.xml) do (
"D:\ProgramFiles\formater\formater.exe" -d %%f -o %%f.pdf -p @PDF >> result.log 
) 

и

for %%f in (mathml*.xml) do (
"D:\ProgramFiles\formater\formater.exe" -d %%f -o %%f.pdf -p @PDF 
) >> result.log 

Я использую функциональность фиксируя все время, и должно быть довольно Пролив вперед и основные использовать, но, видимо, не в для петли ..?

Кто-нибудь знает, как это сделать, или я что-то пропускаю.

Спасибо!

+1

[Отладка пакетных файлов] (http://www.robvanderwoude.com/battech_debugging.php) – JosefZ

+1

Возможно, что программа выводит на стандартный вывод, попробуйте перенаправлять его с помощью '2> & 1' перед' >> ' – wOxxOm

+0

Появляется ли какой-либо текст на экране? (текст, который вы хотите поместить в файл журнала) – aschipfl

ответ

0

Попробуйте следующий код:

@echo off 
rem Delete log file from previous batch execution. 
del result.log 2>nul 
for %%I in (mathml*.xml) do (
    "%ProgramFiles%\formater\formater.exe" -d "%%~fI" -o "%%~dpnI.pdf" -p @PDF 2>&1 >>result.log 
) 
for %%I in (result.log) do if %%~zI == 0 del result.log 

Файл журнала будет удален первый перед записью вывода formater.exe в стандартный вывод и STDERR в лог-файл с помощью command redirection operators.

Вместо D:\ProgramFiles значение переменной окружения ProgramFiles используется в командной строке в FOR loop.

Как mathml*.xml может совпадать также с именами файлов с пробелом в имени, ссылки на имена файлов заключены в кавычки, поскольку в противном случае список аргументов для formater.exe может быть недействительным с именем файла, содержащим 1 или более пробелов, по имени или пути ,

Имена файлов указаны с полным путем, что может быть полезно при чтении файла журнала в случае ошибки.

Файл журнала удаляется после завершения выполнения цикла, если это пустой файл с 0 байтами.

Чтобы понять используемые команды и как они работают, откройте окно командной строки, выполните там следующие команды и внимательно прочитайте все страницы справки, отображаемые для каждой команды.

  • del /?
  • for /?
  • if /?
Смежные вопросы