FileMove
파일을 이동합니다.
FileMove, SourcePattern, DestPattern [, Flag]
매개변수
- SourcePattern
단일 파일의 이름 또는
C:\Temp\*.tmp
와 같은 와일드카드 패턴. SourcePattern은 절대 경로를 지정하지 않으면 %A_WorkingDir%에 있다고 간주됩니다.- DestPattern
목표의 이름 또는 패턴. 절대 경로를 지정하지 않으면 %A_WorkingDir%에 있다고 간주됩니다. 간단한 이동을 수행하려면 -- 기존의 파일 이름은 그대로 두고 -- 폴더 이름만 지정하십시오. 다음 두 예제는 기능상 동등합니다:
FileMove, C:\*.txt, C:\My Folder
FileMove, C:\*.txt, C:\My Folder\*.*
- Flag
(선택적) 이 플래그는 파일이 이미 존재하면 덮어쓸지 말지 결정합니다:
0 = (기본) 기존의 파일을 덮어쓰지 않습니다
1 = 기존의 파일을 덮어씁니다이 매개변수는 표현식일 수 있습니다. 심지어 참이나 거짓으로 평가되면 무엇이든 될 수 있습니다. (참과 거짓은 내부적으로 1과 0으로 저장되기 때문입니다).
ErrorLevel
[v1.1.04+] 이 명령어는 실패시 예외를 던질 수 있습니다. 더 자세한 정보는 실행시간 에러를 참조하십시오.
ErrorLevel은 에러 때문에 이동에 실패한 파일의 개수가 설정됩니다. 그렇지 않으면 0이 설정됩니다. 그렇지만, 소스 파일이 단일 파일이고 (와일드카드 없음) 그리고 존재하지 않으면, ErrorLevel은 0이 설정됩니다. 이 상황을 탐지하려면 이동하기 전에 먼저 소스파일에 IfExist 또는 FileExist()를 사용하십시오.
FileCopy와 다르게, 파일을 자신에 이동하면 언제나 성공한 것으로 간주됩니다. 덮어쓰기 모드가 켜져 있지 않아도 마찬가지입니다.
파일이 발견되면, A_LastError는 0 (영)이 설정되거나 또는 마지막 실패후 즉시 운영 체제의 GetLastError() 함수의 결과가 설정됩니다. 그렇지 않으면 A_LastError에는 왜 파일이 발견되지 않았는지 알려주는 에러 코드가 담깁니다.
논평
FileMove는 파일만 이동합니다. 대신 폴더의 내용을 (그의 모든 파일과 하위 폴더를 포함하여) 이동하려면, 아래 섹션의 예제를 참조하십시오. 단일 폴더를 이동하거나 이름을 바꾸려면, FileMoveDir을 사용하십시오.
에러를 만나더라도 이동을 계속 진행합니다.
이 명령어는 파일을 다른 볼륨에 이동시킬 수 있지만, 같은-볼륨 이동보다 시간이 더 걸립니다. 이것은 같은-볼륨 이동은 이름을 바꾸는 것과 비슷하고, 그래서 훨씬 더 빠르기 때문입니다.
관련 항목
FileCopy, FileCopyDir, FileMoveDir, FileDelete
예제
FileMove, C:\My Documents\List1.txt, D:\Main Backup\ ; 이름을 바꾸지 않고 파일을 이동합니다. FileMove, C:\File Before.txt, C:\File After.txt ; 단일 파일의 이름을 바꿉니다. FileMove, C:\Folder1\*.txt, D:\New Folder\*.bkp ; 파일을 새 확장자로 바꾸고 이동합니다.
; 다음 예제는 한 폴더 안의 모든 파일과 폴더를 다른 폴더로 이동합니다: ErrorCount := MoveFilesAndFolders("C:\My Folder\*.*", "D:\Folder to receive all files & folders") if ErrorCount <> 0 MsgBox %ErrorCount% files/folders could not be moved. MoveFilesAndFolders(SourcePattern, DestinationFolder, DoOverwrite = false) ; SourcePattern에 부합하는 모든 파일과 폴더를 DestinationFolder 이름의 폴더에 이동하고 ; 이동에 실패한 파일/폴더의 개수를 돌려줍니다. ; 이 함수는 FileMoveDir의 모드 2를 사용하기 때문에 v1.0.38+이 필요합니다. { if DoOverwrite = 1 DoOverwrite = 2 ; mode 2 vs. 1 사이의 설명은 FileMoveDir을 참조하십시오. ; 먼저 모든 파일을 이동합니다 (폴더는 이동하지 않습니다): FileMove, %SourcePattern%, %DestinationFolder%, %DoOverwrite% ErrorCount := ErrorLevel ; 이제 모든 폴더를 이동합니다: Loop, %SourcePattern%, 2 ; 2는 "폴더만 열람하라"는 뜻입니다. { FileMoveDir, %A_LoopFileFullPath%, %DestinationFolder%\%A_LoopFileName%, %DoOverwrite% ErrorCount += ErrorLevel if ErrorLevel ; 문제의 폴더를 이름으로 보고합니다. MsgBox Could not move %A_LoopFileFullPath% into %DestinationFolder%. } return ErrorCount }