다음 작업을 수행하기 위해 매일 자동으로 실행되는 배치 스크립트를 작성하려고 합니다.
- 2일보다 오래된 파일을 기본 디렉터리(Jason)에서 아카이브 디렉터리로 이동합니다.
- 1주가 지난 아카이브 디렉터리의 파일을 압축하고 이 디렉터리에서 6개월이 지난 파일을 삭제합니다.
- 이 스크립트를 다른 디렉터리(파일이 있는 디렉터리가 아님)에서 실행하고 싶습니다.
다음 스크립트를 작성했지만 올바르게 작동하지 않습니다.
REM은 2일보다 오래된 파일을 아카이브 디렉터리로 이동합니다. robocopy D:\Agentrics\integration\incoming\Jason D:\Agentrics\integration\incoming\Jason\archive /MOV /MINAGE:2
질문:
- 아래 명령을 1주일이 지난 zip 파일로 변경하려면 어떻게 해야 합니까?
- 압축된 파일의 생성 날짜와 시간이 원본 파일과 동일할 수 있습니까?
REM은 백업 디렉터리의 모든 파일을 압축합니다. FOR %%A IN (*.TXT*, *.cpi*) DO "C:\Program Files\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%A" FOR %%A IN (*.TXT, *.cpi) DO DEL "D:\Agentrics\integration\incoming\Jason\archive\.cpi*" "%%A" REM 백업 디렉터리에서 6개월이 지난 모든 파일을 삭제합니다. forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /m *.* /d -500 /c "cmd /c del /q @path"
답변1
내가 당신이라면, 나는 이것을 위해 사이클을 사용하지 않을 것입니다. 나는 @harper가 제안한 방식을 선호합니다. 그러나 여전히 원하는 방식은 다음과 같습니다.
REM move files older than 2 days to an archive directory
forfiles /P D:\Agentrics\integration\incoming\Jason /M *.txt /S /D -2 /C "cmd /c move @file D:\Agentrics\integration\incoming\Jason\archive"
forfiles /P D:\Agentrics\integration\incoming\Jason /M *.cpi /S /D -2 /C "cmd /c move @file D:\Agentrics\integration\incoming\Jason\archive"
REM zip all files in the backup directory
for /f "tokens=*" %%a in ('forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /d -7') do "C:\Program Files\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%a"
REM Delete all files in the backup directory that are older than 6 months
for /f "tokens=*" %%a in ('forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /d -183') do del D:\Agentrics\integration\incoming\Jason\archive\%%a /y