Я думаю, что вы сделали сценарий слишком сложным. Попробуй это:
for /L %%C in (1,1,31) do (
for /r %1 %%D in ("Folder\Day_%%C.txt") do echo %%D
)
Пара заметок:
Пакетная обработка всех переменных как строк, за исключением случаев использования set /a.
Для for /L
будет делать подсчет для вас, нет необходимости делать дополнительные сложения.
Синтаксис двойного процента (%%C
), требуемый для цикла for
, легко спутать с синтаксисом одного процента (%1
), используемым для доступа к аргументам, передаваемым в сценарий из командной строки. Просто учтите, что в аргументах командной строки используется только один процентный синтаксис.
Я не уверен, что ты, второй for
цикл должен делать. Вам нужна была другая переменная цикла (%%D
), чтобы она работала. Я подозреваю, что вы пытаетесь вывести строки файла Day_1.txt, Day_2.txt и т.д., Но я не думаю, что это сработает так, как в данный момент написано, особенно если вам нужно сначала создать файл.
Редактировать в ответ на комментарий к ответу evianton:
Вы не указали, что вам нужно 2-значные дни в исходном вопросе. Код ниже (измененный от evianton) должен решить эту проблему.
@echo off
setlocal enabledelayedexpansion
for /l %%C in (1,1,31) do (
set num=%%C
if %%C lss 10 set num=0%%C
echo. >> "Folder\Day_!num!.txt"
)