Windows 我在批处理脚本中有3个不同文件的行数,我想添加这些数字并将其打印到输出文件中
我使用下面的批处理脚本生成一个文本文件,显示三个不同的.bch文件中的行数。(这使我可以计算每个.bch进程中处理了多少条记录) 它正在工作,但我想在输出文件中添加一行,将三个值相加,这样我就可以对所有三个文件进行一次累积计数Windows 我在批处理脚本中有3个不同文件的行数,我想添加这些数字并将其打印到输出文件中,windows,batch-file,Windows,Batch File,我使用下面的批处理脚本生成一个文本文件,显示三个不同的.bch文件中的行数。(这使我可以计算每个.bch进程中处理了多少条记录) 它正在工作,但我想在输出文件中添加一行,将三个值相加,这样我就可以对所有三个文件进行一次累积计数 @ECHO OFF type NUL > output_%date:~10%%date:~4,2%%date:~7,2%.txt cd c:\batch for %%G in (C:\batch\*.bch) do find /c /v "_+_" %%G &
@ECHO OFF
type NUL > output_%date:~10%%date:~4,2%%date:~7,2%.txt
cd c:\batch
for %%G in (C:\batch\*.bch) do find /c /v "_+_" %%G >>ipconfig >> c:\batch\output_%date:~10%%date:~4,2%%date:~7,2%.txt
EXIT
您可以在每次迭代中捕获一个变量中的计数,并在进行时将它们全部相加:
set Count=0
for %%G in (C:\batch\*.bch) do (
for %%C in ('find /c /v "" "%%G"') do (
set /a Count+=%%C
>> output.txt echo %%C
)
)
>> output.txt echo %Count%
一些旁注:
exit
,除非您的目标是实际退出命令解释器(这种情况很少发生)。通常,您希望退出批处理文件,这可以通过exit/b
或goto:eof
完成%date%
伪变量。这可以通过
for /f %%a in ('wmic path win32_utctime get /format:list') do 2>nul set /a "%%a"
rem Leading zeroes
if %Month% LSS 10 set Month=0%Month%
if %Day% LSS 10 set Day=0%Day%
if %Hour% LSS 10 set Hour=0%Hour%
if %Minute% LSS 10 set Minute=0%Minute%
if %Second% LSS 10 set Second=0%Second%
echo C:\batch\output_%Year%-%Day%-%Month%.txt
pushd
和popd
,因为这样更容易撤消。在任何情况下,如果当前目录不在C:
上,您的cd C:\batch
将失败;它需要/D
开关才能正常工作set Count+=%%C
-->我可能错了,但这不起作用,因为在调用set
时,您没有使用/A
开关,您使用的是未展开的Count
值,您应该启用延迟展开并使用!伯爵代码>相反,不是吗?我还没有试过你的代码,我可能错了,你是对的。缺少/a
。没有它,+=
没有任何意义,因为它会尝试设置变量的值Count+
。而set/a
不受非延迟变量扩展的影响,因为它不必使用%Variables%
。所以这里不需要使用延迟扩展(这只是我必须再次解释的另一个概念)。