如果令牌=给定数字,如何设置变量

时间:2019-04-18 13:53:07

标签: batch-file for-loop

如果令牌= 1或令牌= 2,依此类推,我正在尝试设置变量。

这是命令行批处理文件

我的问题是如何使我的代码有效,以便将所有1页的pdf文件加起来,并将1个寻呼机的总数放入一个名为1side的变量中,并将2个寻呼机的总数放入一个名为2side的变量中,依此类推。我将在一秒钟内添加pdfcount.tmp的内容。

有关我已完成的工作,请参见下面的代码

if exist *.zip for /f "tokens=2 delims=," %%a in (pdfcount.tmp) do if "%%a"=="[1]" set 1sided=%%a
if exist *.zip for /f "tokens=2 delims=," %%a in (pdfcount.tmp) do if "%%a"=="[2]" set 2sided=%%a
if exist *.zip for /f "tokens=2 delims=," %%a in (pdfcount.tmp) do if "%%a"=="[3]" set 3sided=%%a
if exist *.zip for /f "tokens=2 delims=," %%a in (pdfcount.tmp) do if "%%a"=="[4]" set 4sided=%%a
if exist *.zip for /f "tokens=2 delims=," %%a in (pdfcount.tmp) do if "%%a"=="[5]" set 5sided=%%a

我发现了一个示例代码,它可能与我要寻找的答案很接近:

set index=1
for /f "tokens=3*" %%A in (%file%) do (
    if ("%%A"=="Domains") (
        for %%C in (%%B) do (
            set Domain!index!=%%C
            set /A index+=1
        )
    )
)

这是pdfcount.tmp的内容

24014-20190201-1-en.pdf, 1 
24163-20190201-1-en.pdf, 1 
24219-20190201-1-en.pdf, 1 
2466-20190201-1-en.pdf, 1 
26946-20190201-1-en.pdf, 2 
27103-20190201-1-en.pdf, 3 
28563-20190201-1-en.pdf, 2 
29019-20190201-1-en.pdf, 2 
29287-20190201-1-en.pdf, 3 
30500-20190201-1-en.pdf, 2 
31401-20190201-1-en.pdf, 3 
31525-20190201-1-en.pdf, 2 
31590-20190201-1-en.pdf, 3 
32445-20190201-1-en.pdf, 3 
3765-20190201-1-en.pdf, 1 
4837-20190201-1-en.pdf, 1 
5083-20190201-1-en.pdf, 1 
756-20190201-1-en.pdf, 2 

刚遇到一个问题,它将打印面和数量的列表,但是将11或15或19放在2或3之上,可能是因为11以1开头。 需要将两位数字和三位数字放置在一位数字下。 这是我的问题的一个例子。

Sides_18=1
Sides_3=201
Sides_4=33
Sides_5=4
Sides_6=3
Sides_7=1
Sides_8=1

1 个答案:

答案 0 :(得分:0)

您的问题仍然有点含糊,但我的猜测可能是:

@echo off
setlocal enableDelayedExpansion

for /f "tokens=2 delims=," %%a in (pdfcount.tmp) do (
  set /a nr=%%a
  set /a Pages_!nr! +=1
)
set pages_

编辑以对变量进行排序,您只需添加以下行即可:

for /l %%i in (0,1,300) do if defined pages_%%i echo Pages:%%i=!pages_%%i!

(注意:将300调整为大于最大页面数的值)

但是更好的方法是首先命名可排序的变量:

@echo off
setlocal enableDelayedExpansion

for /f "tokens=2 delims=," %%a in (pdfcount.tmp) do (
  set /a nr=%%a+10000
  set /a Pages_!nr:~-4! +=1
)
set pages_