如何仅在批处理文件中不存在列表元素的情况下创建列表元素



我想创建一个批处理脚本,它将读取像这样的*.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(非常方便))

相关内容

最新更新