파일 이동/압축/삭제를 위한 배치 파일

파일 이동/압축/삭제를 위한 배치 파일

다음 작업을 수행하기 위해 매일 자동으로 실행되는 배치 스크립트를 작성하려고 합니다.

  1. 2일보다 오래된 파일을 기본 디렉터리(Jason)에서 아카이브 디렉터리로 이동합니다.
  2. 1주가 지난 아카이브 디렉터리의 파일을 압축하고 이 디렉터리에서 6개월이 지난 파일을 삭제합니다.
  3. 이 스크립트를 다른 디렉터리(파일이 있는 디렉터리가 아님)에서 실행하고 싶습니다.

다음 스크립트를 작성했지만 올바르게 작동하지 않습니다.

REM은 2일보다 오래된 파일을 아카이브 디렉터리로 이동합니다.
robocopy D:\Agentrics\integration\incoming\Jason D:\Agentrics\integration\incoming\Jason\archive /MOV /MINAGE:2

질문:

  1. 아래 명령을 1주일이 지난 zip 파일로 변경하려면 어떻게 해야 합니까?
  2. 압축된 파일의 생성 날짜와 시간이 원본 파일과 동일할 수 있습니까?
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

관련 정보