본문 바로가기
공부/Linux | windowCmd

cmd 텍스트 파일을 이용해 다중 move 다중 rename

by 찌붕이 2018. 3. 31.

지난주 클라이언트가 서버에 있는 첨부파일들을  쿼리문으로 리스트된 것을 뽑아서 추려 달라고 얘기했다. 대략 1600개 정도에 파일들 이였다. 일단 나는 무대뽀로 1600의 파일들을 직접 컨트롤 씨 컨트롤 브이 해서 파일 하나하나 작업을 했다.(대략 3200번 누른것 같다. )  한 6시간 정도 걸려서 파일들을 다하고 넘겼다. 그리고 다시 클라이언트에게 전화해 일을 끝냈다고 얘기한 순간 5년도 파일들도 뽑아야될것 같다고 얘기했다. 나는 당황했지만.. 당황하지 않고 "네 시간이 쫌 걸리지만 제가 한번 해볼께요" 라고 했다. (대략 만번 컨트롤 c v 를 눌러야 될 상황이고 그렇게되면 18시간이 소요 될것이다..) 다음주 월요일에 한다면 다른일을 아무것도 못할꺼 같은 생각에 cmd명령어를 찾아서 코딩을 해보았다.


-for문을 이동한 다중 파일 이동


우선 "info.txt" 파일을 만들어 준 다음 내용에는 


가야,_,0

 나야,_,1

 다야,_,2

 라야,_,3


이런식을 넣어 주자. 


그 후 경로를 지정해서 저장해주자. 필자는 "C:\1" 로 경로를 지정하여 "info.txt"를 저장하였다.  그리고 txt파일들을 만들어주자 필자는 가야,나야,다야 이렇게 3개 파일을 만들었다.



cmd 창을 열고 해당 info가 있는 경로로 가주자! 



FOR /F "tokens=첫번째열,두번째열,세번째열 delims=열구분자 " %i in (파일내용.txt) do IF EXIST 파일이름.txt move 현재경로 이동할경로


일단 해당 경로에서 info.txt파일 안에 내용을 가지고 for문을 돌린다. /f 옵션이 파일의 내용을 가지고 for문을 돌리는....(처음만들은거라 잘 모르겠다..ㅋㅋ) 일단 tokens는 열을 인식하는 것 같다 delims는 열을 구분해주는 구분자이다.(필자는  쉼표로 구분했다.) 


일단 info.txt 안에 내용들이 잘나오는지 echo로 확인해보자. 지금 보면 IF EXIST는 해당 경로에 파일이 있는지 확인해 주는 것이다. 

마지막 라야는 파일이 없어서 echo가 찍히지 않았다.  


정상적으로 파일이름이 찍히니 파일을 이동해보자.





자 정상적으로 c:\2 로 이동 되었다.  (원하는 확장자를 이용해서 응용하면 될것이다.)


자 이제는 이동된 파일들을 info.txt를 통해 다중으로 rename 해주자.


파일이동가 비슷하다.



일단 이동된 c\2 로 가서 아까 info.txt를 저장 한다. (필자가 짜놓은 스크립트는 꼭 해당경로에 파일이 있어야된다. )


-파일 이름 변경 

FOR /F "tokens=첫번째열,두번째열,세번째열 delims=열구분자 " %i in (파일내용.txt) do IF EXIST 파일이름.txt ren %i.txt %i%j%k.txt(%i:첫번째 열값 %j: 두번째열값 %k: 세번째열값)



스크립트를 실행해보면 info.txt파일 에 있는 내용들이 파일 이름으로 변경된것을 확인할 수 있다.


이 스크립트는 확장자도 확인해되고 조금 허접한 스크립트이다..


하지만 정말 긴급할땐 응용해서 써먹으면 나쁘지 않을것 같다. 


처음이라 허접하다... 부디 노가다하지 않길 빌며..  이 스크립트를 잘 쓰시길 바란다. (3200번 하면 손가락에 진물이 난다..)





댓글