在for循环中获取dos批处理文件中的文件路径

时间:2014-08-06 18:22:39

标签: windows batch-file for-loop dos

我正在尝试创建一个批处理文件,该文件将进入目录并查找日志文件,然后搜索日志文件以查看单词“ERROR:”是否在行的开头。那部分我已经想通了。我现在的问题是尝试创建一个显示行来显示我在* .log之后的目录。

例如

------- C:\ TEMP * .LOG -----------------

- C:\ TEMP \ temp1.log

- C:\ TEMP \ temp2.​​log

错误:温度错误

------- C:\ TEMP \子目录* .LOG -----------------

- C:\ TEMP \子目录\ temp3.log

错误:这是一个错误

- C:\ TEMP \子目录\ 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

它不显示主路径或文件路径。

1 个答案:

答案 0 :(得分:0)

更改此行:

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

到此:

Echo.---------- %%~fI