无法在批处理脚本中的同一行中回显

时间:2016-06-11 00:10:54

标签: batch-file

我有包含多行的txt文件,我需要创建一个日志,以便在日志中存储以下信息:
文件名
最后修改的 包含单词"有效"

的行数

我已将一个.bat文件放在一起,但它将输出分成两行。

type nul >  FilesReceived.txt & for %f in (*.log) do (
find /c "valid" %f & echo(%~tf)>> LogsReceived.txt
)

使用type nul我清除FilesReceived.txt文件的内容。然后我遍历log类型的文件 然后我计算包含单词valid和find / c的行,并且我也回显最后修改的时间戳。

然而输出如下:

  

---------- transaction_20160505_1005A.log:6492
  2016/06/10 04:37

我不知道是什么产生了这些破折号。最终,我希望每个日志文件有一行,如下所示:

  

transaction_20012B.log:6492 10/06/2016 04:37 p.m。

希望你们能帮帮我。

谢谢,

布鲁斯

2 个答案:

答案 0 :(得分:2)

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"
)

如果你想保留你的订单,那就更复杂了:你不能强迫find在没有换行的情况下写作,所以你必须使用一个技巧(另一个{{1} }):

for

答案 1 :(得分:1)

您可以通过另一个SqlConnection conn = new SqlConnection(@"Data Source=192.168.1.101;Initial Catalog=Imatismos;user ID=admin;Password=1234"); 获取find命令的输出并将其放在您希望的任何地方:

for