Tom's Guide | Tom's Hardware | Tom's Games
![]() |
![]() |
![]() |
Is there a way I can have a batch file take a set of files in a folder c:\123
file1.txt
file2.txt
file3.txtand copy them to a folder c:\backup
having another set of folders increment for the day that they are backed up on? (only 5 days)c:\backup\Monday\file1.txt
file2.txt
file3.txt
c:\backup\Tues\file1.txt
file2.txt
file3.txtc:\backup\Wed\file1.txt
file2.txt
file3.txt
.....etcthis should then repeat the next week overwriting Mondays backup then on Tuesday it overwrites Tuesdays backup.
I've read on here how to make incremental directories, how to increment a single file name but nothing like this one?
Anybody have an idea?
Maybe its easier to say I need to copy a daily current set of files to the daily folder overwriting the previous weeks file of the current day. Get it?I'm loosing it.... ahhhh

The first section of the code below is to establish the alpha name of the day-of-the-week from %date% and is dependent on the format of what is returned by echoing your %date%. The date format used is "day mm/dd/yyyy". The deletion of old file(s) and copying the new ones has not been tested.
:: Code begins...
@echo off cls :: Find alpha day of week... set day=%date:~7,2% set month=%date:~4,2% set year=%date:~-4% if %day% lss 10 set day=%day:~-1% if %month% lss 10 set month=%month:~-1% set /a a=(14-%month%)/12 set /a y=%year%-%a% set /a m=%month%+12*%a%-2 set /a daynumber=(%day% + %y% + %y%/4 - %y%/100 + %y%/400 + (31*%m%/12)) %% 7 set /a daynumber=%daynumber%+1 for /f "tokens=%daynumber%" %%1 in ( "Sunday Monday Tuesday Wednesday Thursday Friday Saturday") do ( set dayalpha=%%1 ) :: Delete old backup file(s) and Copy new... set pathname=C:\Backup\%dayalpha%\ if exist %pathname% del/q %pathname%\*.* copy C:\123\*.* %pathname% :: Code ends...Good luck.

This will set a var to today's DAY, using BIOS:
==================================
@echo off & setLocal EnableDelayedExpansion> d.d echo E 0100 B4 2A CD 21 B4 4C CD 21
>> d.d echo N DAY.COM
>> d.d echo RCX
>> d.d echo 8
>> d.d echo W
>> d.d echo Qdebug < d.d > nul
del d.dday
if errorlevel 0 set day=Sunday
if errorlevel 1 set day=Monday
if errorlevel 2 set day=Tuesday
if errorlevel 3 set day=Wednesday
if errorlevel 4 set day=Thursday
if errorlevel 5 set day=Friday
if errorlevel 6 set day=Saturday
echo today is %day%
=====================================
If at first you don't succeed, you're about average.M2

This is what I have. I decided to use a full date instead of a weekday. Now I am having the issue where I cannot remove the directory. The code states rd /s /q I even tried to pass it as a var _rdflag. It tells me that the directory isnt empty. This code will work if there isnt anything in the directories. Any ideas how to force this to delete?
@Echo Off
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set day=%%a-%%b-%%c)mkdir %DAY%
xcopy "C:\stuff\*.*" c:\backups\%DAY% /q:: Set this to the number of folders you want to keep
Set _NumtoKeep=2:: Set this to the folder that contains the folders to check and delete
Set _Path=C:\backupsIf Exist "%temp%\tempjunk" Del "%temp%\tempjunk"
PushD %_Path%Set _s=%_NumtoKeep%
If %_NumtoKeep%==1 set _s=singleFor /F "tokens=* skip=%_NumtoKeep%" %%I In ('dir "%_Path%" /AD /B /O-D /TW') Do (
If Exist "%temp%\tempjunk" (
Echo %%I:%%~fI >>"%temp%\tempjunk"
) Else (
Echo.>"%temp%\tempjunk"
Echo.>>"%temp%\tempjunk"
Echo.>>"%temp%\tempjunk"
Echo %%I:%%~fI >>"%temp%\tempjunk"
)):_Removeold
Set _rdflag= /q
For /F "tokens=1* skip=3 Delims=:" %%I In ('type "%temp%\tempjunk"') Do (
If "%_rdflag%"=="" Echo Deleting
rd /s%_rdflag% "%%J"):_Done
If Exist "%temp%\tempjunk" Del "%temp%\tempjunk"

What happens when you:
rd /s /q
=====================================
If at first you don't succeed, you're about average.M2

I took a little break from this project, but I have since gotten it to work. Seems as I had a typo... go figure but here is the code if someone else could benefit.
Thank to all that helped :)@Echo Off
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set day=%%a-%%b-%%c)mkdir %DAY%
xcopy "C:\stuff to backup\*.*" c:\backups\%DAY% /q /e /h /i /c /g /y:: Set this to the number of folders you want to keep
Set _NumtoKeep=10:: Set this to the folder that contains the folders to check and delete
Set _Path=C:\backupsIf Exist "%temp%\tempjunk" Del "%temp%\tempjunk"
PushD %_Path%Set _s=%_NumtoKeep%
If %_NumtoKeep%==1 set _s=singleFor /F "tokens=* skip=%_NumtoKeep%" %%I In ('dir "%_Path%" /AD /B /O-D /TW') Do (
If Exist "%temp%\tempjunk" (
Echo %%I:%%~fI >>"%temp%\tempjunk"
) Else (
Echo.>"%temp%\tempjunk"
Echo.>>"%temp%\tempjunk"
Echo.>>"%temp%\tempjunk"
Echo %%I:%%~fI >>"%temp%\tempjunk"
)):_Removeold
Set _rdflag= /q
For /F "tokens=1* skip=3 Delims=:" %%I In ('type "%temp%\tempjunk"') Do (
If "%_rdflag%"=="" Echo Deleting
rd /s%_rdflag% "%%I"):_Done
If Exist "%temp%\tempjunk" Del "%temp%\tempjunk

![]() |
Txt renamer from content?
|
Batch scripting
|

This post is quite old and has been locked from receiving new replies. Please create a new posting instead.
| Ads by Google |