라벨이 PowerShell인 게시물 표시

파워쉘을 통해 핸드폰 파일 복사하기

오늘 일어나보니 제 노트10의 유심 트레이가 죽어있었습니다. 현금도 얼마 없는데 수리비 깨질 것을 생각하니 그냥 핸드폰을 바꾸고 몇 달에 걸쳐 할부금을 납부하는게 이득 아닐까라는 생각이 계속 들더군요. 그래서 핸드폰을 바꾸고자 마음먹고 기종을 찾아보니, 제가 바꾸고자 하는 기종은 Micro SD를 지원하지 않는다는 것을 알게 되었습니다. 따라서 저는 외장 SD카드와 내장 SD카드의 중요 내용을 [1] 컴퓨터에 백업하고자 했는데... 느려터진 탐색기 언제나 그렇듯 이 탐색기가 또 발목을 잡았습니다. 탐색기에서 파일 복사/이동/삭제를 대량으로 할 때에 우선 탐색기는 해당 컨텐츠들 [2] 을 쭉 읽어들입니다. 이건 제 뇌피셜이지만 아마 대량의 파일 복사/이동/삭제시 나타나는 프로그래스바를 표시하기 위해 일단 전체 파일이 몇 개인지 읽어들이는 것 같습니다. 그래야 현재까지 복사/이동/삭제된 파일 수와 전체 파일 수의 비율로 프로그래스바를 표시할 수 있을 테니까요. 아무튼, 이미 저는 대량의 파일 삭제 시 이렇게 느려터진 게 짜증나서 [3] 파워쉘을 통해 빠르게 삭제하는 스크립트를 레지스트리로 컨텍스트 메뉴에 등록해둔 상태였습니다. mtp는 다르다 하지만 핸드폰은 같은 방법을 사용할 수 없었습니다. 정확히 말하면, 기본적으로 파워쉘에서 제공해주는 명령어 셋으로는 불가능했습니다. 단순히 제가 찾지 못한 것일 수도 있지만, 아무튼 찾을 수조차 없었습니다. 하지만 구글, 그리고 스택오버플로우는 언제나 답을 알려주죠. 검색해보니 이런 스택오버플로우 글 을 찾을 수 있었습니다. Shell.Application COM Object MSDN 문서 를 보면 해당 COM Object는 쉘 어플리케이션을 반환합니다. 즉 탐색기 API라고 보셔도 무방할 듯 합니다. 이를 사용하면, 탐색기로 할 수 있는 일을 프로그램화시켜 할 수 있다는 것이죠. 그리고 해당 스택오버플로우 글에서 제시한 방법을 따르면, 다음과 같이 사용이 가능합니다. $shell ...

[PowerShell] 특정 디렉토리 내 파일의 확장자 일괄 변경

  제목대로, 이번엔 파워쉘에서 특정 디렉토리 내의 확장자를 일괄 변경하는 방법에 대해 써보려 합니다.   파워쉘이 없던 시절엔 명령 프롬프트의 ren 명령어로 이러쿵 저러쿵 사용했던 것 같은데, 잘 기억이 안 나는 바람에 이렇게 된 거, 파워쉘로 해보자 하며 찾아본 결과입니다.   DIR 명령어는 Get-ChildItem 혹은 GCI 명령어로도 대체 가능합니다. DIR | Rename-Item -NewName { [System.IO.Path]::ChangeExtension($_.Name, ".확장자") }   당연히 DIR 옆의 | 기호는 파이프 기호입니다. 대충 동작하는 과정은, 1. Get-ChildItem으로 현재 디렉토리 내의 모든 파일/폴더를 가져옴 2. 1. 의 각 항목에 대해 Rename-Item 명령어를 실행 3. Rename-Item 명령어의 -NewName 인수에 따라, 새 이름을 적용 4. 바뀔 이름은 각 항목이서 확장자만 확장자 로 바꾼 문자열이 됨