CMD 명령어를 이용한 폴더 파일 목록 추출하는 방법(feat. 파워셸)
가끔 특정 폴더 내 파일 목록 추출이 필요 할 때가 있지 않으신가요? 시간이 너무 오래 걸리니 이걸 일일이 손으로 할 수도 없잖아요? 이 포스트에서는 CMD 명령어와 파워셸을 사용하여 이러한 작업을 손쉽게 수행하는 방법을 소개합니다.
이 방법을 사용하면 몇 가지 간단한 명령어만으로도 원하는 결과를 얻을 수 있습니다. 우선, 내가 원하는 폴더 내 모든 파일의 파일명을 CSV 파일로 추출하는 방법을 설명하겠습니다. 그리고 추출 후에 조금 수정할 사항(예시: 10자리만 추출)을 반영하는 과정을 소개하도록 하겠습니다.
이 가이드를 통해 파일 관리를 더 효율적이고 효과적으로 하실 수 있을 겁니다. 한번 시작해 보실까요?
CMD 창을 여는 방법
우선, CMD(명령 프롬프트) 창을 오픈하겠습니다. 아래의 단계를 따라 주세요.
시작 메뉴에서 CMD 실행하기
- 단축키 사용:
Windows 키 + R
을 눌러 실행 창을 엽니다. 실행 창에cmd
를 입력하고Enter
를 누릅니다. - 시작 메뉴 사용: 화면 좌측 하단의 시작 버튼을 클릭하고, 검색 창에
cmd
또는명령 프롬프트
를 입력합니다. 검색 결과에서 명령 프롬프트를 클릭하여 실행합니다.
관리자 권한으로 CMD 실행하기
- 단축키 사용:
Windows 키 + X
를 누른 후, 메뉴에서명령 프롬프트(관리자)
를 선택합니다. - 시작 메뉴 사용: 검색 창에
cmd
를 입력한 후, 검색 결과에서명령 프롬프트
를 마우스 오른쪽 버튼으로 클릭하고관리자 권한으로 실행
을 선택합니다. 전 이 옵션을 추천드립니다.
폴더 내 모든 파일 목록을 CSV로 변환하는 방법
CMD와 파워셸을 이용하여 폴더 내 모든 파일 목록을 CSV 파일로 변환하는 방법을 단계별로 설명합니다.
1. CMD 명령어를 사용하여 파일 목록을 텍스트 파일로 저장하기
먼저, CMD 창을 열고 아래 명령어를 입력(복붙)하여 지정된 폴더(C:\test) 내의 모든 파일명을 텍스트 파일(file_list.txt
)로 저장합니다. 원하시는 폴더의 주소를 C:\test 대신 사용하시면 됩니다.
dir /b "C:\test" > file_list.txt
2. 텍스트 파일을 CSV 파일로 변환하기
다음으로, 파워셸을 사용하여 텍스트 파일을 읽고 CSV 파일로 변환합니다.
powershell -Command "Get-Content file_list.txt | Out-File file_list.csv -Encoding ascii"
3. 임시 텍스트 파일 삭제하기
임시로 생성된 텍스트 파일(file_list.txt
)을 삭제하여 작업을 완료합니다.
del file_list.txt
전체 명령어 한 번에 실행하기
진행되는 절차 이해를 위해서 단계적으로 설명을 드렸습니다. 하지만 위의 모든 단계를 한 번에 실행할 수 있습니다. 아래 명령어를 CMD 창에 복사하여 붙여넣기 한 후 Enter
키를 눌러 실행하시면 됩니다.
cd "C:\test"
dir /b > file_list.txt
powershell -Command "Get-Content file_list.txt | Out-File file_list.csv -Encoding ascii"
del file_list.txt
이렇게 하면 file_list.csv
파일에 폴더 내의 모든 파일명이 아래와 같은 식으로 저장됩니다.
0292021001R00.pdf
file_list.csv 파일의 내용
2192014006R01.pdf
2372019002R00.pdf
2442015001R01.pdf
그런데 실제 csv 파일을 만들어서 내용을 확인해보니 파일명과 확장자까지 다 반영이 된게 확인됩니다. 그 상태의 사용이 아니라 파일명만 사용하고 싶고 혹시 그 중에서도 몇몇 자리만 사용하고 싶을 경우는 다음과 같이 하시면 됩니다. 여기서는 첫 10자리만 추출하는 것으로 해보겠습니다.
파일명에서 첫 10자리만 추출하여 CSV로 저장하는 방법
우선, 이전에 했던 것처럼 CMD 명령어를 사용하여 폴더 파일 목록 추출을 하고 텍스트 파일로 저장하겠습니다.
dir /b "C:\test" > file_list.txt
파워셸을 사용하여 각 파일명에서 첫 10자리만 추출하여 CSV 파일로 저장합니다. 아래 명령어에서 10 대신 다른 수를 넣으면 원하는 자리수에 맞춰 추출 가능합니다.
powershell -Command "Get-Content file_list.txt | ForEach-Object { $_.Substring(0,10) } | Out-File file_list.csv -Encoding ascii"
그리고 기존에 만들었는 텍스트 파일은 삭제 해줍니다.
del file_list.txt
위의 모든 단계를 한 번에 실행할 수 있도록 CMD 명령어를 작성했습니다. 아래 명령어를 CMD 창에 복사하여 붙여넣기 한 후 Enter
키를 눌러 실행하세요.
cd "C:\test"
dir /b > file_list.txt
powershell -Command "Get-Content file_list.txt | ForEach-Object { $_.Substring(0,10) } | Out-File file_list.csv -Encoding ascii"
del file_list.txt
이 과정을 통해 file_list.csv
파일에는 각 파일명의 첫 10자리만 저장됩니다.
0292021001
file_list.csv 파일의 내용
2192014006
2372019002
2442015001
정리하기
이번 포스트에서는 CMD 명령어를 복붙 한번만 하면 내가 원하는 폴더의 파일명 전체를 리스트로 만드는 방법을 알아보았습니다.
명령어 구성 내용이 중요하기보다 이 명령어를 알고 있어서 리스트를 만들어 낼 수 있는게 중요하겠죠? 그런 의미에서 여러분은 또 다른 스킬을 습득하셨습니다.
다음 번에는 또 다른 스킬을 소개하도록 하겠습니다.
감사합니다.
#참고사항
CMD 명령어에 대한 세부적인 설명은 아래와 같습니다. 혹시나 더 깊이 아시고 싶으신 분은 참고하시면 될 것 같습니다.
폴더 내 모든 파일 목록을 CSV로 변환하기
```cmd
cd "C:\test"
dir /b > file_list.txt
powershell -Command "Get-Content file_list.txt | Out-File file_list.csv -Encoding ascii"
del file_list.txt
```
이 명령어들은 다음의 순서로 실행됩니다:
1. `cd "C:\test"`:
- "C:\test" 디렉토리로 이동합니다.
- `cd` 명령어는 'Change Directory'의 약자로, 지정된 경로로 이동하는 데 사용됩니다.
2. `dir /b > file_list.txt`:
- 현재 디렉토리(C:\test) 내의 파일 목록을 가져와 `file_list.txt` 파일로 저장합니다.
- `dir` 명령어는 디렉토리 내의 파일 및 폴더 목록을 나열합니다.
- `/b` 옵션은 파일명만 출력합니다.
- `>`는 출력 결과를 파일로 저장합니다.
3. `powershell -Command "Get-Content file_list.txt | Out-File file_list.csv -Encoding ascii"`:
- `file_list.txt` 파일의 내용을 읽어 `file_list.csv` 파일로 저장합니다.
- `powershell -Command`는 파워셸 명령어를 실행합니다.
- `Get-Content file_list.txt`는 `file_list.txt` 파일의 내용을 가져옵니다.
- `|` (파이프)는 앞의 명령어 출력 결과를 뒤의 명령어로 전달합니다.
- `Out-File file_list.csv -Encoding ascii`는 내용을 `file_list.csv` 파일로 저장하며, 인코딩 형식을 ASCII로 지정합니다.
4. `del file_list.txt`:
- 임시로 생성된 `file_list.txt` 파일을 삭제합니다.
- `del` 명령어는 지정된 파일을 삭제합니다.
이 명령어들은 한 번에 실행되어 `C:\test` 디렉토리의 모든 파일명을 `file_list.csv` 파일로 저장하고, 임시 파일을 삭제합니다.
파일명에서 첫 10자리만 추출하여 CSV로 저장하기
```cmd
cd "C:\test"
dir /b > file_list.txt
powershell -Command "Get-Content file_list.txt | ForEach-Object { $_.Substring(0,10) } | Out-File file_list.csv -Encoding ascii"
del file_list.txt
```
이 명령어들은 다음의 순서로 실행됩니다:
1. `cd "C:\test"`:
- "C:\test" 디렉토리로 이동합니다.
2. `dir /b > file_list.txt`:
- 현재 디렉토리(C:\test) 내의 파일 목록을 가져와 `file_list.txt` 파일로 저장합니다.
3. `powershell -Command "Get-Content file_list.txt | ForEach-Object { $_.Substring(0,10) } | Out-File file_list.csv -Encoding ascii"`:
- `file_list.txt` 파일의 내용을 읽어 각 파일명에서 첫 10자리만 추출한 후 `file_list.csv` 파일로 저장합니다.
- `powershell -Command`는 파워셸 명령어를 실행합니다.
- `Get-Content file_list.txt`는 `file_list.txt` 파일의 내용을 가져옵니다.
- `|` (파이프)는 앞의 명령어 출력 결과를 뒤의 명령어로 전달합니다.
- `ForEach-Object { $_.Substring(0,10) }`는 각 파일명에서 첫 10자리를 추출합니다.
- `ForEach-Object`는 각 항목에 대해 지정된 작업을 수행하는 파워셸 명령어입니다.
- `{ $_.Substring(0,10) }`는 파일명의 첫 10자리를 추출하는 스크립트 블록입니다.
- `$_`는 현재 처리 중인 항목을 나타내는 파워셸 자동 변수입니다.
- `Substring(0,10)`는 문자열의 처음 10자를 추출하는 메서드입니다.
- `Out-File file_list.csv -Encoding ascii`는 결과를 `file_list.csv` 파일로 저장하며, 인코딩 형식을 ASCII로 지정합니다.
4. `del file_list.txt`:
- 임시로 생성된 `file_list.txt` 파일을 삭제합니다.
이 명령어들은 한 번에 실행되어 `C:\test` 디렉토리의 모든 파일명에서 첫 10자리를 추출하여 `file_list.csv` 파일로 저장하고, 임시 파일을 삭제합니다.