我有包含多行的txt文件,我需要创建一个日志,以便在日志中存储以下信息:
文件名
最后修改
包含单词"valid"的行数
我把一个.bat文件放在一起,但它将输出分成两行.
type nul > FilesReceived.txt & for %f in (*.log) do (
find /c "valid" %f & echo(%~tf)>> LogsReceived.txt
)
Run Code Online (Sandbox Code Playgroud)
使用nul类型我清除FilesReceived.txt文件的内容.然后我遍历log类型的文件.
然后我计算包含单词valid和find/c的行,并且我也回显最后修改的时间戳.
但是输出看起来像:
---------- transaction_20160505_1005A.log:6492
10/06/2016 04:37 pm
我不知道是什么产生了破灭.最终,我希望每个日志文件有一行,如下所示:
transaction_20012B.log:6492 10/06/2016 04:37 pm
希望你们能帮助我.
谢谢,
布鲁斯
find如果处理文件则打印破折号。从 STDIN 处理时则不会(type file.ext /c |find "string"仅打印计数)。
不换行的写法有一个技巧:<nul set /p"=Hello"
如果您可以接受其他订单,则组装起来非常容易::
@echo off
for %%f in (*.bat) do (
<nul set /p "=%%f %%~tf "
type %%f|find /c "echo"
)
Run Code Online (Sandbox Code Playgroud)
如果你想保留你的订单,那就有点复杂了:你不能强制find在没有换行的情况下写入,所以你必须使用一个技巧(另一个for):
@echo off
(for %%f in (*.txt) do (
<nul set /p "=%%f: "
for /f %%i in ('type %%f^|find /c "valid"') do (<nul set /p "=%%i ")
echo %%~tf
))>LogsReceived.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
673 次 |
| 最近记录: |