윈 도 우 배치파일속의 변수가 변하질 않습니다
2021.01.19 00:07
안녕하세요~~
다름이 아니라 문서내의 파일들을 매뉴로 나타나게 하기 위해서
앞에 숫자를 붙이고 문서내의 파일이름을 옆에 나열하여
선택하게끔 하는 내용을 제작 하려고 하는데요
1. 11.log
2. 12.log
3. 13.log
이런식으로 나열후 선택하게끔 하려고 하고 있습니다.
그러나 앞에 1,2,3 카운터가 동작을 안하는데 왜 안하는것인지 좀 살펴봐주십시요
내용은 아래와 같습니다
set ct=1
for /f "tokens=1" %%a in (file.dat) do (
echo %ct%번 %%a
set /a ct=+1
)
이렇게 실행하면 아래처럼 1개 숫자만 문서안에 파일 갯수만큼 주루룩 뜹니다;; 왜 증가가 안되는건지 궁금합니다. 감사합니다.
1번 11.log
1번 12.log
1번 13.log
댓글 [9]
-
BecauseI 2021.01.19 00:42 -
모노시티 2021.01.19 08:18
도움 감사드립니다. 집에가면 해보겠습니다. -
bangul 2021.01.19 01:00
@echo off
chcp 65001 >nul
cd /d %~dp0
findstr /n /v ` file.dat
echo.
echo.
pause
exit
1:11.log
2:12.log
3:13.log
Press any key to continue . . .
findstr /n /v ` file.dat => ` file.dat 파일에 없는 문자를 사용 합니다.
-
모노시티 2021.01.19 08:18
와우~!! 감사드립니다. 집에서 시험해보겠습니다 -
모노시티 2021.01.19 15:54
천재시네요~ 희얀하네;;;; 요런맛에 프로그래밍 하는것 같아요 신기방기
-
suk 2021.01.19 04:04
숫자 1을 계속 더하기 하시려면, set /a ct=+1 가 아니고 set /a ct+=1 입니다.
그리고 for 구문 안에서 ct 변수를 재지정하시려면
배치 파일 윗부분에 setlocal enabledelayedexpansion 추가하시고, %ct%는 !ct!로 하셔야 됩니다
그리고 파일 이름에 띄어쓰기가 있는 경우를 감안하여 "tokens=1"를 "tokens=*"로 변경하시면 됩니다
-
모노시티 2021.01.19 08:19
헉! 문법이 틀렸던건가요?
친절한 설명 감사드립니다. ^^ -
컨피그 2021.01.19 04:40
set "ct=1"
for /f %%a in (file.dat) do (
call :_ct %%a
)
pause
exit
:_ct
echo %ct%번 %1
set /a "ct+=1"
exit /b
-
모노시티 2021.01.19 08:20
오 call문을 이렇게!!!!
활용하는 예문 참 고맙습니다. 감사드립니다^^
@echo off
setlocal enableDelayedExpansion
set ct=1
for /f "tokens=1" %%a in (file.dat) do (
echo !ct!번 %%a
set /a ct+=1
)