jmander Posted February 27, 2013 Share Posted February 27, 2013 Hello, I am trying to write a batch script that will run automatically daily to do the following. 1. Move files older than 2 days to from the main directory(Jason) to archive directory. 2. Zip files in the archive directory that are older than 1 week and delete files from this directory that are older than 6 months. 3. I want to run this script from a different directory(not the directory that has the files). I wrote the following script but its not correctly working. Can you please help. REM move files older than 2 days to a archive directory robocopy D:\Agentrics\integration\incoming\Jason D:\Agentrics\integration\incoming\Jason\archive /MOV /MINAGE:2 Question: How can i change the command below to zip files older than 1 week. Also i want to put this command in a batch file that will run from a different location? Is it possible that the zipped files can have the same creation date and time as the original files? REM zip all files in the backup directory 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 Delete all files in the backup directory that are older than 6 months forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /m *.* /d -500 /c "cmd /c del /q @path" Kind Regards, Jason Link to comment https://www.neowin.net/forum/topic/1138966-batch-file-to-move-compress-delet3-files/ Share on other sites More sharing options...
0 jmander Posted February 28, 2013 Author Share Posted February 28, 2013 How can i change this script so that it only compresses the files that are older than 7 days. FOR %%A IN (D:\Agentrics\integration\incoming\Mansoor\backup\*.txt*, D:\Agentrics\integration\incoming\Mansoor\backup\*.cpi*) DO "C:\Program Files\WinRAR\WinRAR.exe" a -r D:\Agentrics\integration\incoming\Mansoor\backup\"%%~nA.zip" "%%A" FOR %%A IN (D:\Agentrics\integration\incoming\Mansoor\backup\*.TXT,D:\Agentrics\integration\incoming\Mansoor\backup\*.cpi) DO DEL "D:\Agentrics\integration\incoming\Mansoor\backup\.cpi*" "%%A" Regards, Jason Link to comment https://www.neowin.net/forum/topic/1138966-batch-file-to-move-compress-delet3-files/#findComment-595549662 Share on other sites More sharing options...
0 Karl L. Posted February 28, 2013 Share Posted February 28, 2013 Although its not exactly what you're looking for, this article describes the creation a DIY backup system. Since it discusses many of the issues and their possible solutions in-depth, it might help. Good luck. Link to comment https://www.neowin.net/forum/topic/1138966-batch-file-to-move-compress-delet3-files/#findComment-595549908 Share on other sites More sharing options...
0 Phouchg Posted February 28, 2013 Share Posted February 28, 2013 You could let RAR handle that using -to7d (meaning exactly what you want - time older than 7 days) switch. If no file(s) being processed qualify, no archive is created (and exit code 10 is returned, should you want to debug with %errorlevel%). As for the whole backup system - surely there must be a better way. Link to comment https://www.neowin.net/forum/topic/1138966-batch-file-to-move-compress-delet3-files/#findComment-595550078 Share on other sites More sharing options...
0 jmander Posted February 28, 2013 Author Share Posted February 28, 2013 Thank you guys for your help. Howerver I have a question for Phouchg. You said that i can use the -to7d option in my command. I tried this option but getting errors. Can you please take a look at the command below, i added -to7d in this command. FOR %%A IN (D:\Agentrics\integration\incoming\Mansoor\backup\*.txt*, D:\Agentrics\integration\incoming\Mansoor\backup\*.cpi*) DO -to7d "C:\Program Files\WinRAR\WinRAR.exe" a -r D:\Agentrics\integration\incoming\Mansoor\backup\"%%~nA.zip" "%%A" kind Regards, Jason Link to comment https://www.neowin.net/forum/topic/1138966-batch-file-to-move-compress-delet3-files/#findComment-595550174 Share on other sites More sharing options...
0 Obi-Wan Kenobi Posted February 28, 2013 Share Posted February 28, 2013 looks like to me, you should include the a and -r functions in quotes too...so it would be "C:\Program Files\WinRAR\Winrar.exe a -r"....but I could be wrong....I'm a little rusty. Link to comment https://www.neowin.net/forum/topic/1138966-batch-file-to-move-compress-delet3-files/#findComment-595550210 Share on other sites More sharing options...
0 Phouchg Posted February 28, 2013 Share Posted February 28, 2013 It's a switch for WinRAR, not for CMD ;) FOR %%A IN (D:\Agentrics\integration\incoming\Mansoor\backup\*.txt*, D:\Agentrics\integration\incoming\Mansoor\backup\*.cpi*) DO "C:\Program Files\WinRAR\WinRAR.exe" a -r -to7d D:\Agentrics\integration\incoming\Mansoor\backup\"%%~nA.zip" "%%A" See WinRAR.chm help file in your C:\Program Files\WinRAR\ folder. Command line syntax is explained in detail. There's overwhelming amount of stuff, mostly useful. Though I don't think either CMD or RAR can change creation time to an arbitrary value (-tl switch preserves modification time only). Powershell might. Link to comment https://www.neowin.net/forum/topic/1138966-batch-file-to-move-compress-delet3-files/#findComment-595550230 Share on other sites More sharing options...
0 jmander Posted March 4, 2013 Author Share Posted March 4, 2013 Thanks phouch for sharing your knowledge. I looked at WinRAR.chm help and it really helped. Also I added -to7d and worked just fine.I have one more question. Is it possible to create the zip files with the same file creation date as the origininal files (non-zipped files)? I want to delete the zipped files that are older than 6 months from the archieve directory but after those files are zipped they show the current date and time. For example if i zip a file that was created 6 months ago i want the zipped file creation date date also be six months? Is it possible to do that? Regards, Jason Link to comment https://www.neowin.net/forum/topic/1138966-batch-file-to-move-compress-delet3-files/#findComment-595556552 Share on other sites More sharing options...
0 Kami- Posted March 4, 2013 Share Posted March 4, 2013 On 04/03/2013 at 06:12, jmander said: Thanks phouch for sharing your knowledge. I looked at WinRAR.chm help and it really helped. Also I added -to7d and worked just fine.I have one more question. Is it possible to create the zip files with the same file creation date as the origininal files (non-zipped files)? I want to delete the zipped files that are older than 6 months from the archieve directory but after those files are zipped they show the current date and time. For example if i zip a file that was created 6 months ago i want the zipped file creation date date also be six months? Is it possible to do that? Regards, Jason 1. Surely you should be deleting the files before compressing them - why go to the effort of compressing them just to delete them? 2. You can alter file creation dates - it's a bit messy and not-advised, especially on compressed files (zip,rar,etc) as it may cause corruption. 3. You could always create the compressed file with the original date in the filename (myfile01.txt -> 20120328_myfile01.rar). Link to comment https://www.neowin.net/forum/topic/1138966-batch-file-to-move-compress-delet3-files/#findComment-595556620 Share on other sites More sharing options...
0 jmander Posted March 6, 2013 Author Share Posted March 6, 2013 Here is my script. Can someone answer my two questions please? I have a batch script that does the following @ECHO OFF REM move files older than 2 days from the incoming directory to the incoming archive directory robocopy D:\Agentrics\integration\download D:\Agentrics\integration\download\archive /MOV /MINAGE:2 REM Zip files in the Archieve directory that are older than one week FOR %%A IN (D:\Agentrics\integration\download\archive*.txt*, D:\Agentrics\integration\download\archive*.cpi*) DO "C:\Program Files\WinRAR\WinRAR.exe" a -r -to7d D:\Agentrics\integration\download\archive\"%%~nA.zip" "%%A" REM Delete Original files after they are zipped forfiles /p D:\Agentrics\integration\download\archive /s /m .txt /d -7 /c "cmd /c del /q @path" forfiles /p D:\Agentrics\integration\download\archive /s /m .cpi /d -7 /c "cmd /c del /q @path" REM Delete files that are older than 6 months from the archive directory forfiles /p D:\Agentrics\integration\download\archive /s /m .zip /d -180 /c "cmd /c del /q @path" pause Question 1: When i run the script i get WinRAR diagnostic messages for some files. For example if there are files in the incoming directory that are not older than two days i get this message."WinRAR Diagnostic messages: No File To Add". Because of this message the scripts stops until i click on the close button of the dialogue box. I am using the free version of WinRAR and its not expired Question 2: I have two seprate command in the script above. One is for zipping the files older than a week and the other one is deleting the original files after they are zipped. How can i link those two commands so that if some reason the files did not get zipped they should also not get deleted. Or is is there a command to break the script if the files did not get zipped? I just want to zipp the files first and then delete the original ones. Thanks, Jason Link to comment https://www.neowin.net/forum/topic/1138966-batch-file-to-move-compress-delet3-files/#findComment-595561968 Share on other sites More sharing options...
Question
jmander
Hello,
I am trying to write a batch script that will run automatically daily to do the following.
1. Move files older than 2 days to from the main directory(Jason) to archive directory.
2. Zip files in the archive directory that are older than 1 week and delete files from this directory
that are older than 6 months.
3. I want to run this script from a different directory(not the directory that has the files).
I wrote the following script but its not correctly working. Can you please help.
REM move files older than 2 days to a archive directory
robocopy D:\Agentrics\integration\incoming\Jason D:\Agentrics\integration\incoming\Jason\archive /MOV
/MINAGE:2
Question: How can i change the command below to zip files older than 1 week. Also i want to put this
command in a batch file that will run from a different location? Is it possible that the zipped files
can have the same creation date and time as the original files?
REM zip all files in the backup directory
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 Delete all files in the backup directory that are older than 6 months
forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /m *.* /d -500 /c "cmd /c del /q @path"
Kind Regards,
Jason
Link to comment
https://www.neowin.net/forum/topic/1138966-batch-file-to-move-compress-delet3-files/Share on other sites
9 answers to this question
Recommended Posts