본문 바로가기

Some tips

[Powershell] 하위 특정 폴더 삭제 & 각 상위 폴더로 일괄 이동시키기

Windows- Powershell 에서 파일 조작을 하고자 한다.

리눅스 명령어가 잘 안먹혀서 이것저것 찾아보고 정리함.

 

 

■ A 폴더 밑으로 많은 폴더들이 존재. 각 폴더는 0~100 이름으로 됐으며 각 폴더 내에 test 폴더와 train 폴더가 존재. 

 test 폴더들을 지우고자 한다. 아래와 같은 상태.

 (1) A폴더 까지 간다.

 > cd A

 

 (2) 다음 폴더가 무엇이 되든 그 폴더 밑의 test폴더를 삭제

   (삭제 명령어는 현재 위치 등을 고려하여 유의할 것. 본인책임)

 

 > del *\test

 

 

 다음은 test 와 함께 존재하던 train 폴더 내 파일을 각자 상위 폴더로 이동시키고자 한다.

  (1) 메모장을 연다.

  (2) 아래 스크립트를 입력. \0~3 폴더들\train\모든 파일들을 \모든폴더\ 위치로 옮기는 작업이다. 작업 후 train 폴더들이 모두 삭제되는 코드이므로 주의. 지우고싶지 않다면 RMDIR ~ 라인의 코드 삭제.

@echo off
for /f "tokens=* delims=" %%a in ('dir /a:d /b "%~dp0"') do (
        copy "%~dp0%%a\train\*.*" "%~dp0%%a\" 
        RMDIR /q /s "%~dp0%%a\train"
        )

 (3) 저장시 filename.bat 와 같이 이름을 지어 A폴더에 저장.

 (4) powershell에서 > filename.bat 입력하여 실행 (혹시 잘못 처리될 수 있으니 파일 백업 추천)

 

 

■ 모든 test 폴더 삭제와 train 폴더 내 파일들을 상위로 복사하는 과정을 거치면 아래와 같이 됨