작동하지 않는 스크립트가 있습니다.
set /a num=0
for /L %%C in (1,1,31) do (
set /a num+=1
set day=%num%
for /r %%1 in ("Folder\Day_%num%.txt") do echo %num%
)
파일 이름을 만드는 데 사용할 수 있는 문자열 변수가 되려면 루프에서 생성된 1부터 31까지의 숫자가 필요합니다. 내 경우에는 이 목적으로 %%C 매개변수나 숫자 변수 "num"을 모두 사용하는 데 문제가 있습니다. 관심 숫자를 유지하는 문자열 변수 "day"를 설정하려고 시도했지만 여전히 작동하지 않습니다. 이유를 모르겠습니다. 문제를 해결하는 데 도움을 주세요.
답변1
당신이 정말로 원하는 것이 무엇인지 잘 이해했는지는 모르겠지만, 이름에 요청된 번호가 포함된 빈 파일을 생성할 코드가 있습니다. 귀하가 찾고 있는 답변이 아닌 경우, 보다 구체적으로 요청해 주십시오.
FOR /L %%C IN (1,1,31) DO (
ECHO. >> "Folder\Day_%%C.txt"
)
참고: "폴더" 디렉터리가 있는지 확인하십시오.
답변2
스크립트를 너무 복잡하게 만든 것 같아요. 이 시도:
for /L %%C in (1,1,31) do (
for /r %1 %%D in ("Folder\Day_%%C.txt") do echo %%D
)
몇 가지 참고 사항:
Batch는 다음을 사용할 때를 제외하고 모든 변수를 문자열로 처리합니다./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"
)