Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何将命令结果插入到相同的“中”;“回声”;线路?_Batch File_Batch Processing - Fatal编程技术网

Batch file 如何将命令结果插入到相同的“中”;“回声”;线路?

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%\

我想创建一个包含以下信息的日志文件: 回显%时间%;%日期%;%计算机名%;“findstr/I”%%a“%MYFILES%\Dir\u ALL.txt”>>%computername%\u File.csv

我如何写一些不会写“findstr/I…”但会写这个命令输出的东西

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


谢谢

您必须使用命令结果设置一个变量。这在中得到了回答,使用了一个虚拟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%
不会更改(如果循环一段时间,可能会有问题)
!时间将在每次发生时进行计算)。观看或观看演示。