Batch file 如何将命令结果插入到相同的“中”;“回声”;线路?
我想创建一个包含以下信息的日志文件: 回显%时间%;%日期%;%计算机名%;“findstr/I”%%a“%MYFILES%\Dir\u ALL.txt”>>%computername%\u File.csv 我如何写一些不会写“findstr/I…”但会写这个命令输出的东西 我希望输出文件中的所有内容都在同一行中Batch file 如何将命令结果插入到相同的“中”;“回声”;线路?,batch-file,batch-processing,Batch File,Batch Processing,我想创建一个包含以下信息的日志文件: 回显%时间%;%日期%;%计算机名%;“findstr/I”%%a“%MYFILES%\Dir\u ALL.txt”>>%computername%\u File.csv 我如何写一些不会写“findstr/I…”但会写这个命令输出的东西 我希望输出文件中的所有内容都在同一行中 谢谢您必须使用命令结果设置一个变量。这在中得到了回答,使用了一个虚拟for循环,其循环变量是根据文件内容设置的 可能是这样的: findstr /I "%%a" %MYFILES%\
谢谢您必须使用命令结果设置一个变量。这在中得到了回答,使用了一个虚拟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
这有一个限制:变量不能包含多行。然而,将脚本片段重新表述为循环也可能解决这个问题
显示了一些附加功能,可用于控制如何解析文件中的数据。通常,它将结果解析为由空格分隔的标记。但是您可以使用
delims
关键字来覆盖它。使用set/p
在不使用换行符的情况下写一行,后跟第二行:
<nul set /p .=%time%;%date%;%computername%;>>%computername%_File.csv
findstr /I "%%a" %MYFILES%\Dir_ALL.txt>>%computername%_File.csv
%computername%\u File.csv
findstr/I“%%a”%MYFILES%\Dir\u ALL.txt>>%computername%\u File.csv
注意:由于
%%a
的原因,我猜您是在for
语句中使用此代码片段。我建议使用!时间
而不是%time%
来获取实际时间(当然使用延迟扩展)谢谢您的回答。尝试解决方案时,如果%%i包含空格,则结果将在我的csv文件中被截断。有没有一种不必创建临时文件的方法(因为之前有另一个循环,我认为这不是最有效的方法)?您可以通过引用(不确定,无需进行一些测试)来解决这个问题。之所以使用临时文件,是因为set
命令无法读取命令的输出(最接近的是/p
选项,这似乎不是解决问题的方法)。谢谢,我将尝试一下。如果我在“FOR”语句中,您能告诉我为什么需要使用“!”而不是“%”吗?(对不起我的问题)。没问题。整个for
语句会立即解析,因此%time%
不会更改(如果循环一段时间,可能会有问题)!时间代码>将在每次发生时进行计算)。观看或观看演示。