
작업 스케줄러를 사용하여 매일 밤 모든 폴더와 파일을 삭제하려고 합니다. 작업에서 다음 명령을 사용하고 있습니다.
프로그램/스크립트: forfiles
인수:/S /P C:\Users\david\AppData\Roaming\Apple Computer\MobileSync\Backup /C "cmd /c if @isdir==TRUE rd /s /q @file"
이것은 파일이나 폴더를 삭제하는 것이 아닙니다. 이 예에서 내가 놓친 것은 무엇입니까?
이것은 작동하는 것 같지만 오류가 발생합니다. /S /P "C:\Users\Sales\AppData\Roaming\Apple Computer\MobileSync\Backup" /C "cmd /c rd /s /q @file
오류:
C:\Users\david>forfiles /S /P "C:\Users\david\AppData\Roaming\Apple Computer\MobileSync\Backup" /C "cmd /c rd /s /q @file
ERROR: The system cannot find the file specified.
C:\Users\david>
답변1
"rd /s /q"로 모든 것을 망칠 계획인데 하위 디렉토리를 검색하는 이유는 무엇입니까?
당신은 무엇을~할 것 같다(아마도) 이것은 다음과 같습니다.
- forfiles작업할 파일 목록을 작성합니다. 예를 들어... "C:\This" 그리고 "C:\이\저것"
- 당신은 "C:\This"너한테 건네줬어
- "를 삭제했습니다.C:\This" 재귀적으로
- 당신은 "C:\이\저것"당신에게 건네줬어요.
- 존재하지 않기 때문에 삭제하는 동안 오류가 발생합니다.
또 다른 상황도 발생할 수 있습니다! 트리를 열거하는 동안 파일 핸들이 열려 있을 수 있으므로 삭제하려고 하면 "C:\This", "C:\이\저것"는 여전히 forfiles에 의해 열려 잠겨 있습니다. forfiles가 이를 우회하기 위해 작성되었는지는 모르겠지만확실히프로그래밍하는 동안 이런 일이 발생합니다.
제안: /S를 삭제하세요.forfiles(최고) 또는 "어쩌고 저쩌고.."를 추가하세요.@파일이 존재하는 경우" 어쩌고 저쩌고 (최고는 아님).