윈 도 우 파일명이나 폴더명을 변수로저장
2020.11.25 16:35
dir /b하면 아래와 같이 경로상의 폴더명 or 파일명이 출력 되는데
저 중에서 3D Objects 라는 첫번째줄 결과값을 변수1에 저장하고
Contects를 변수2에 저장하고 이렇게 저장할방법없을까요
파일목록 전체를 각각의 변수 1,2,3,4,5 ...으로 저장하고 싶습니다.
C:\Users\USER>dir /b
3D Objects
Contacts
Desktop
Documents
Downloads
Favorites
KCase.log
Links
Music
OneDrive
Pictures
Saved Games
Searches
Videos
댓글 [5]
-
DarknessAngel 2020.11.25 17:42
-
Greinke 2020.11.25 18:40
힌트라도 주셔서 감사합니다. 해보겠습니다 :)
-
지후빠 2020.11.25 19:56
위 링크 참고 하십시오. 다음 처럼하면
@echo off
setlocal enableDelayedExpansion
set /a ID=1
for /f "delims=" %%G in ('dir /b') do (
set List[!ID!]=%%~G
set /a ID+=1
)
set List
endlocal
제 컴터에서 결과가 다음과 같습니다.
List[10]=Music
List[11]=NTUSER.DAT
List[12]=Pictures
List[13]=Saved Games
List[14]=Searches
List[15]=test.bat
List[16]=Videos
List[17]=VirtualBox VMs
List[1]=.VirtualBox
List[2]=3D Objects
List[3]=Contacts
List[4]=Desktop
List[5]=Documents
List[6]=Downloads
List[7]=Exam4Me2
List[8]=Favorites
List[9]=Links
-
Greinke 2020.12.10 14:57
해결하였습니다. 감사합니다!
-
suk 2020.11.26 13:28
이름 순으로 저장되게 했습니다. 다만 폴더 이름이 영어로 나오기 때문에 탐색기에서 보는 이름 순과는 다릅니다
이 bat 파일은 목록에 나오지 않는 것을 원하실 듯 해서? 목록에 나오지 않게 했습니다
bat 파일에서 핵심적인 부분입니다
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@cd /d %~dp0@setlocal enabledelayedexpansion
@if exist list_tmp.txt del /f/a/q list_tmp.txt
for /f "tokens=*" %%a in ('dir /b/on') do @if "%%a" neq "%~nx0" ( set /a k+=1& echo set !k!=%%a>>list_tmp.txt )
@echo.
for /f "tokens=1* delims==" %%a in ('type list_tmp.txt') do %%a=%%b
@if exist list_tmp.txt del /f/a/q list_tmp.txt
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
변수를 바로 bat 파일 창에 나타나게 하니까, 윗분 댓글처럼 번호들이 순서대로 나타나지 않아서
txt에 저장하고 다시 변수를 재지정하게 했습니다
반복문 쓰세요
택스트 + for문의 회수를 제어하는데 준 값해서 변수 이름으로 해서 대입하게 짜세요