Windows 명령 프롬프트에서 파일을 한 줄씩 가져오기
하고 싶은 일
요컨대
makeFile.txt
20190101 01
20190101 02
20190102 01
20190115 01
이렇게 공백으로 구분된 파일이 있다면 아래와 같이 C:\work 아래에 디렉토리를 만들고,
C:¥work¥
|-20190101
| |-01
| |-02
|-20190102
| |-01
|-20190115
|-01
또한 가장 깊은 디렉토리에 dummy1.txt ~ dummy5.txt를 만들고 배치.
C:¥work¥
|-20190101
| |-01
| | |-dummy1.txt
| | |-dummy2.txt
| | |-dummy3.txt
| | |-dummy4.txt
| | |-dummy5.txt
| |-02
| | |-dummy1.txt
| | ~略~
| | |-dummy5.txt
|-20190102
| |-01
~略~
수작업이라면 귀찮아서 수고가 걸리므로, 배치로 단번에 만들어 주자! 그리고. ^^
1. 파일을 한 줄씩 불러오기
for /f %%[アルファベット1文字] in ([ファイル名]) do ([処理])
먼저 파일을 한 줄씩 읽고 공간을 구분하여 각 값을 가져 와서 변수에 저장합니다.
@echo off
rem makeFile.txtからスペースまで(1列目)をaに格納,2列目をbに格納
for /f "tokens=1,2" %%a in (makeFile.txt) do (
echo %%a
echo %%b
echo ----------
)
실행 결과
20190101
01
----------
20190101
02
----------
20190102
01
----------
20190115
01
----------
"tokens=n"으로 n열째의 값을 취득해 줍니다. 이번은 1열째와 2열째를 취득하고 싶기 때문에 "tokens=1,2"라고 씁니다. 변수에 %%a만 쓰면 자동으로 b에 두 번째 값이 검색됩니다. 그 때문에 xyz등의 변수를 지정하는 것은 그만두는 편이 좋을 것입니다.
공백이 구분됨
만약 공백을 구분하지 않고 1행 전체를 취득하고 싶은 경우는 「delims」옵션을 붙입니다.
@echo off
rem makeFile.txtから1行全体を取得
for /f "delims=" %%a in (makeFile.txt) do (
echo %%a
echo ----------
)
실행 결과
20190101 01
----------
20190101 02
----------
20190102 01
----------
20190115 01
----------
만약 단락 문자가 공백이 아니고 「/」이면 "delims=/"라고 씁니다.
for 루프를 사용하여 파일 내용을 한 줄씩로드
2. 디렉토리 작성
mkdir <ディレクトリ名>
에서 만들 수 있습니다.위의 for 루프와 mkdir 명령으로 지정된 디렉토리를 만들 수 있습니다.
mkdir.bat
@echo off
cd /d %~dp0
setlocal enabledelayedexpansion
rem makeFile.txtからスペースまで(1列目)をaに格納,2列目をbに格納
for /f "tokens=1,2" %%a in (makeFile.txt) do (
set dir1=%%a
set dir2=%%a\%%b
rem ディレクトリがなければ作成
if not exist !dir1! (
echo !dir1!のディレクトリを作成します
mkdir !dir1!
if not exist !dir2! (
echo !dir2!のディレクトリを作成します
mkdir !dir2!
)
) else (
if not exist !dir2! (
echo !dir2!のディレクトリを作成します
mkdir !dir2!
)
)
)
endlocal
주의
"setlocal enabledelayedexpansion"은 for 루프 내에서 값을 변경하기위한 놀라운 일입니다.
setlocal enabledelayedexpansion ~ endlocal
에서 for 루프를 둘러싸자.또한 루프 내에서 변수를 사용하는 경우 %가 아닌!로 묶어야합니다.
배치 파일로 루프 처리
3. 지정된 크기의 더미 파일 만들기
파일 작성은
fsutil file createnew <ファイル名> <サイズ(byte)>
로 할 수 있습니다.지정된 크기 더미 파일 생성 (Windows, Mac)
이것을 for로 5회 돌려 줍니다.
for /L %%[アルファベット1文字] in (開始,ステップ,終了) do ([処理])
의외로 알려져 있지 않지만, 알고 있으면 편리한 FOR 명령
mkdir.bat
@echo off
cd /d %~dp0
setlocal enabledelayedexpansion
rem makeFile.txtからスペースまで(1列目)をaに格納,2列目をbに格納
for /f "tokens=1,2" %%a in (makeFile.txt) do (
set dir1=%%a
set dir2=%%a\%%b
rem ディレクトリがなければ作成
if not exist !dir1! (
echo !dir1!のディレクトリを作成します
mkdir !dir1!
if not exist !dir2! (
echo !dir2!のディレクトリを作成します
mkdir !dir2!
)
) else (
if not exist !dir2! (
echo !dir2!のディレクトリを作成します
mkdir !dir2!
)
)
set count=0
for /L %%n in (0,1,5) do (
set /a count=!count!+1
fsutil file createnew !dir2!\dummy!count!.txt 1024
)
)
endlocal
이것으로 완성입니다.
이번에는 1KB 더미 파일을 만들었습니다.
4. 실행해보기
오!
오!
오!
할 수 있었습니다. 제대로 1KB가되고 있습니다
이상입니다. 감사합니다.
Reference
이 문제에 관하여(Windows 명령 프롬프트에서 파일을 한 줄씩 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Nemy/items/1169aee51473a09aed41텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)