Получение пути к файлу в пакетном файле dos в цикле for

Я пытаюсь создать пакетный файл, который будет идти в каталог и искать файлы журнала, а затем искать файлы журнала, чтобы увидеть, находится ли слово «ОШИБКА:» в начале строки. Эту часть я понял. Теперь моя проблема заключается в попытке создать строку отображения, чтобы показать, в каком каталоге я нахожусь с *.log после него.

Например

-------c:\temp*.log-----------------

--c:\temp\temp1.log

--c:\temp\temp2.log

ОШИБКА: временная ошибка

-------c:\temp\subdir*.log-----------------

--c:\temp\subdir\temp3.log

ОШИБКА: это ошибка

--c:\temp\subdir\temp4.log

Это код, который я сейчас использую

Set _OutFile=c:\temp\check_error.txt
If Exist "%_OutFile%" Del "%_OutFile%"
For /F "Tokens=* Delims=" %%I In ('Dir /b "c:\temp\*.log"') Do (
(Echo.
 Echo.---------- %%~I
 )>>"%_OutFile%"
Findstr /B /C:"ERROR:"  "%%I">>"%_OutFile%"
)

Это произведет только

---------- TempData.log

Он не показывает основной путь или путь к файлам.


person user3523871    schedule 06.08.2014    source источник


Ответы (1)


Измените эту строку:

Echo.---------- %%~I

к этому:

Echo.---------- %%~fI
person aphoria    schedule 06.08.2014
comment
aphoria, Спасибо, что добавили полный путь. Как я могу получить корневой каталог, в котором я сейчас нахожусь? - person user3523871; 06.08.2014
comment
Переменная окружения %CD% вернет текущий каталог. Это то, что вы хотите? - person aphoria; 06.08.2014
comment
Спасибо, что очень помогли. Есть ли способ вывести %%~fI в верхний регистр? Я знаю, что для этого подхода есть только два каталога, поэтому я делаю их отдельно. Я думаю, что в конечном итоге мне понадобится цикл for внутри цикла for. - person user3523871; 06.08.2014
comment
К сожалению, в пакетном режиме нет простого способа преобразования в верхний или нижний регистр. Вы можете найти несколько вариантов на странице robvanderwoude.com/battech_convertcase.php, но может быть и больше. неприятности, чем оно того стоит. - person aphoria; 06.08.2014
comment
Спасибо за вашу помощь. - person user3523871; 07.08.2014