如何在同一个" echo"中插入命令结果?线?

时间:2015-05-06 08:21:01

标签: batch-file batch-processing

我想用这个信息创建一个日志文件: echo%time%;%date%;%computername%;" findstr / I" %% a" %MYFILES%\ Dir_ALL.txt" >> %计算机%_File.csv

我怎样才能写出不会写的内容" findstr / I ..."但是这个命令的输出?

我希望输出文件中的所有内容都在同一行。

谢谢

2 个答案:

答案 0 :(得分:1)

您必须使用命令结果设置变量。这在 Windows Batch help in setting a variable from command output 中得到了回答,使用了一个伪for循环,其循环变量是根据文件的内容设置的。

这将是这样的:

findstr /I "%%a" %MYFILES%\Dir_ALL.txt >%temp%\temp.txt
for /f %%i in (%temp%\temp.txt) do echo %time%;%date%;%computername%;%%i >> %computername%_File.csv
del %temp%\temp.txt

这有一个限制:变量不能包含多行。但是,将脚本片段重新定义为循环也可能会解决该问题。

MSDN article on set显示了一些其他功能,您可以使用这些功能来控制如何解析文件中的数据。通常它会将结果解析为由空格分隔的标记。但您可以使用delims关键字覆盖它。

答案 1 :(得分:1)

写一行没有换行的set /p,然后是第二行:

<nul set /p .=%time%;%date%;%computername%;>>%computername%_File.csv
findstr /I "%%a" %MYFILES%\Dir_ALL.txt>>%computername%_File.csv

注意:由于我猜%%a,您在for语句中使用此代码片段。我建议使用!time!代替%time%来获取实际时间(当然使用延迟扩展)