我想创建一个批处理脚本,它将读取像这样的*.txt
文件
05.2016 192
04.2016 431
05.2016 29
12.2015 110
12.2015 42
12.2015 7584
12.2015 1118
04.2016 0
12.2015 356
05.2016 140
05.2016 248
04.2016 2012
并且仅当第一令牌是新的时才创建列表元素,并且将第二令牌添加到其值,如果它已经被使用了,我想在它之前的值之外添加第二个令牌
例如列表【2016年4月】的值为2443(431+0+2012)
我试过这个代码
@echo off
setlocal enabledelayedexpansion
for /F "tokens=1,2" %%i in (text.txt) do (
if pole[%%i]==nul set pole[%%i]=%%j
::else ( set pole[%%i]=pole[%%i]+%%j )
echo !pole[%%i]!
)
echo !pole[04.2016]!
echo !pole[05.2016]!
(其他行仅用于预览我下一步要做的事情:-D)
我预计我在IF的行中会有一些错误,因为当我尝试只使用的简化代码时
for /F "tokens=1,2" %%i in (spracuj2.txt) do (
set pole[%%i]=%%j
echo !pole[%%i]!
)
它工作正常,但我需要if语句:-p
您低估了set
的威力。您的if
语句不起作用(您不需要它)。你必须使用set /a
进行计算:
@echo off
setlocal enabledelayedexpansion
for /F "tokens=1,2" %%i in (test.txt) do set /a pole[%%i]+=%%j
echo !pole[04.2016]!
echo !pole[05.2016]!
echo ----
set pole[
(您不需要if
,因为set /a var=%emptyVariable%
将var
设置为0
(非常方便))