Windows 如何将命令结果批量存储到变量中?

Windows 如何将命令结果批量存储到变量中?,windows,batch-file,Windows,Batch File,我正在尝试创建一个.bat文件,根据与条件匹配的行数向文本文件中添加空行。这是一家公司所拥有的: @echo SET /a maxLineas = 50 SET cantLineasDetalle="type texto.txt | find /i /c "D01" " SET /a cantLineasAgregar = %maxLineas% - %cantLineasDetalle% :loop echo. >> texto.txt set /a cantLineasAgre

我正在尝试创建一个.bat文件,根据与条件匹配的行数向文本文件中添加空行。这是一家公司所拥有的:

@echo
SET /a maxLineas = 50
SET cantLineasDetalle="type texto.txt | find /i /c "D01" "
SET /a cantLineasAgregar = %maxLineas% - %cantLineasDetalle%

:loop
echo. >> texto.txt
set /a cantLineasAgregar-=1
if %cantLineasAgregar% GTR 0 goto loop
问题是var“cantLineasDetalle”没有存储我希望它执行的值

如何将“type texto.txt | find/I/c“D01”的执行结果分配给变量?

提前感谢,,
Esteban.

对于/f%%i in('type texto.txt | find/i/c“D01'),请设置cantLineasDetalle=%i

对于/f%%i in('type texto.txt | find/i/c“D01'),请设置cantLineasDetalle=%i

正如前面的答案所示,您使用for/f循环将命令的结果存储到变量中

find“search”>文件
将在文件中添加一行空格。另外,使用
echo(
而不是
echo.
)更安全,但您可能永远不会遇到echo问题。要获得没有空格的空行,请使用
echo(>>文件

当使用SET/A进行数学运算时,您可以直接引用变量,而无需将它们包含在百分比中。它也适用于百分比

最后,在FOR/L循环中附加行比使用GOTO循环更有效

@echo off
set /a maxLineas=50
for /f %%N in('find /i /c:"D01" ^<texto.txt') do set /a cantLineasDetalle=%%N
set /a cantLineasAgregar=maxLineas-cantLineasDetalle
for /l %%N in (1 1 %cantLineasAgregar%) do echo(>>texto.txt
@echo关闭
设置/a最大线性=50

对于/f%%N in('find/i/c:'D01“^,如前面的答案所示,您可以使用for/f循环将命令的结果存储到变量中

find“search”>file
将在文件中附加一行空格。此外,使用
echo(
而不是
echo.
)更安全,但您可能永远不会遇到echo问题。要获得没有空格的空行,请使用
echo(>>file

当使用SET/A进行数学运算时,您可以直接引用变量,而无需将它们包含在百分比中。它也适用于百分比

最后,在FOR/L循环中附加行比使用GOTO循环更有效

@echo off
set /a maxLineas=50
for /f %%N in('find /i /c:"D01" ^<texto.txt') do set /a cantLineasDetalle=%%N
set /a cantLineasAgregar=maxLineas-cantLineasDetalle
for /l %%N in (1 1 %cantLineasAgregar%) do echo(>>texto.txt
@echo关闭
设置/a最大线性=50

对于/f%%N in('find/i/c:'D01“^谢谢您的回答,但它不起作用。它显示了一个错误:“|不应出现”。我已将我的代码的第四行替换为您的代码以获得该结果。问题是,
必须在in()中转义clauseMy Windows Fu已经生锈了-自从我打磨它很久了。谢谢你的回答,但它不起作用。它显示了一个错误:“不期望”。我已经用你的代码替换了我的代码的第四行以获得该结果。问题是
必须在IN()中转义克劳塞米·Windows Fu已经生锈了——我已经擦亮它很久了。谢谢你。就在你回答之前几分钟,我在控制台上找到了答案。我就是这么做的:“for/f”tokens=3%%%G in('find/I/c“D01”c:\texto.txt')do SET cantlines=%%G”但是我会用你的建议来修改我的代码。我真的很欣赏你的答案。再次感谢。@t3b4n-FIND很奇怪:
FIND“search”文件
不同于
FIND“search”谢谢。就在你回复之前几分钟,我在控制台上找到了答案。这就是我所做的:“for/f”tokens=3%%G in('find/i/c“D01”c:\texto.txt')确实设置了cantlinesadetalle=%%G“,但我将使用您的建议来修改我的代码。我非常感谢您的回答。再次感谢。@t3b4n-find很奇怪:
find“search”文件
不同于
find“search”