我想创建批处理脚本,它将读取*.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
并且仅当第一个标记是新标记并且将第二个标记添加到其值时才创建列表元素, 如果它已被使用我想添加第二个令牌以及它以前的值
例如list [04.2016]的值为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]!
(else行仅用于预览下一步我要做的事情:-D)
我希望我在 IF 的行中有一些错误,因为当我尝试使用
的简单代码时for /F "tokens=1,2" %%i in (spracuj2.txt) do (
set pole[%%i]=%%j
echo !pole[%%i]!
)
它工作正常,但我需要if语句:-P
答案 0 :(得分:1)
你低估了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
(非常方便))