Как зациклить путь пакетного файла к команде .txt? - PullRequest
1 голос
/ 29 апреля 2019

Я создаю путь к файлу .txt с именами файлов, которые соответствуют времени года. Вместо того, чтобы создавать файл .bat с 365 строками для каждого дня года, есть ли более простой способ циклического перехода с ежедневными приращениями?

В настоящее время мой .bat выглядит так:

dir A2018001* /a /b /s > 2018001.txt
dir A2018002* /a /b /s > 2018002.txt
dir A2018003* /a /b /s > 2018003.txt
dir A2018004* /a /b /s > 2018004.txt
dir A2018005* /a /b /s > 2018005.txt
dir A2018006* /a /b /s > 2018006.txt
dir A2018007* /a /b /s > 2018007.txt
dir A2018008* /a /b /s > 2018008.txt
dir A2018009* /a /b /s > 2018009.txt

и т.д ....

Что работает нормально, но есть ли способ избежать 365 строк кода в .bat с циклом?

Я очень новичок в использовании /l, но я попробовал это:

for /l %%x in (001, 1, 365) do (
    echo %x
    dir A2018001* /a /b /s > 2018001.txt
)

и файлы не перебирались.

Есть ли способ выполнить приведенный выше код с циклом for, увеличивающимся с шагом 1 для каждого дня, поэтому мне не нужно записывать его 365 раз?

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Вы сделали код почти правильно. Просто нужно pad переменная с нулями.

setlocal enabledelayedexpansion
for /l %%x in (1,1,365) do (
    set "d=00%%x"
    set "d=!d:~-3!"
    dir "A2018!d!*" /a /b /s > "2018!d!.txt"
)
0 голосов
/ 29 апреля 2019

Вы также должны использовать двойную процентную запись %% x внутри цикла for, например:

for /l %%x in (2018001,1,2018365) do (
      echo %%x
      dir A%%x* /a /b /s > %%x.txt
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...