只有在批处理文件中不存在列表元素时才能创建列表元素?

时间:2016-05-03 14:37:51

标签: list batch-file if-statement

我想创建批处理脚本,它将读取*.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

1 个答案:

答案 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(非常方便))