Как пакетно сделать папки на основе текстового файла с порядковым номером - PullRequest
0 голосов
/ 25 октября 2018

У меня есть текстовый файл, похожий на приведенный ниже.

foo
bar
baz
qux

Я также создал пакетный файл, который создает папки из текстового файла, но как я могу добавить порядковый номер для каждого имени папки (возможно, с начальным нулем))?

for /f "delims=" %%f in (%1) do (
  md "%%f"
)

Я хочу, чтобы результат был примерно таким:

foo_001
bar_002
baz_003
qux_004

С наилучшими пожеланиями.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Просто чтобы показать, что есть хотя бы третий способ, использующий цикл подсчета и считывающий входные данные из файла:

:: Q:\Test\2018\10\25\SO_52980091.cmd
@Echo off & Setlocal EnableDelayedExpansion

<SO_52980091.txt (
  For /l %%A in (1001,1,1999) do (
        Set /p "Input="
        if not defined Input goto :Eof
        Set Num=%%A
        MD "!Input!_!Num:~-3!"
        Set "Input="
  )
)

Я подтверждаю, что партия Squashmans выглядит более элегантно / короче.

0 голосов
/ 25 октября 2018

Ну, у вас есть два варианта.Создайте переменную-счетчик и увеличьте ее внутри команды FOR.Или вы можете использовать команду FINDSTR для создания чисел, что я и выбрал.

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%G in ('findstr /N "^" "%~1"') do (
    set num=000%%G
    md "%%H_!num:~-4!"
)
...