Получаване на пътя на файла в пакетния файл на 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