Как установить переменную, если токен = для данного числа - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь установить переменную, если токен = 1 или токен = 2 и т. Д.

Это командный файл командной строки

У меня вопрос, как мне сделатьМой код действителен, поэтому он складывает все 1-страничные PDF-файлы и помещает общее количество 1 пейджеров в переменную с именем 1sided и 2 пейджера в переменную с именем 2sided и так далее.Я добавлю содержимое файла 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 голосов
/ 18 апреля 2019

Ваш вопрос все еще немного расплывчат, но я думаю, что-то вроде:

@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_
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...