Welcome guest. Before posting on our computer help forum, you must register. Click here it's easy and free.
#!/bin/bashdesktop="/cygdrive/c/Documents and Settings/carson/Desktop"if [ -e $desktop/`date --date=yesterday +%Y%m%d` ]; then rm -r $desktop/`date --date=yesterday +%Y%m%d` mkdir $desktop/`date +%Y%m%d`else mkdir $desktop/`date +%Y%m%d`fi
@echo offcd %USERPROFILE%\Desktopmkdir "%DATE%"
@echo offcd %USERPROFILE%\Desktopecho The current date is: %DATE%echo Creating Today's Folderset today=%DATE:~0,3%mkdir "%today%"if '%today%'=='Mon' rmdir Sun /S /Qif '%today%'=='Tue' rmdir Mon /S /Qif '%today%'=='Wed' rmdir Tue /S /Qif '%today%'=='Thu' rmdir Wed /S /Qif '%today%'=='Fri' rmdir Thu /S /Qif '%today%'=='Sat' rmdir Fri /S /Qif '%today%'=='Sun' rmdir Sat /S /Qpause
no i tested it on a Win XP computer it does start with a 3 letter day: this is the output of date in XP:Thu 02/26/2009
C:\>date /t26/02/2009C:\>time /t19:52
C:\>evaluate date26/02/2009C:\>evaluate date-125/02/2009C:\>evaluate date-1016/02/2009C:\>evaluate date-10018/11/2008C:\>evaluate date-36527/02/2008C:\>evaluate date-365001/03/1999C:\>evaluate date-3650023/03/1909
@echo offecho wscript.echo (date-1)>yesterday.vbsfor /f "delims==" %%D in ('cscript //nologo yesterday.vbs') do set yesterdate=%%Ddel yesterday.vbsecho Yesterday's date was %yesterdate%
C:>yester.batYesterday's date was 25/02/2009
desktop="/cygdrive/c/Documents\ and\ Settings/carson/Desktop"
this ought to do the trick:Code: [Select]@echo offcd %USERPROFILE%\Desktopecho The current date is: %DATE%echo Creating Today's Folderset today=%DATE:~0,3%mkdir "%today%"if '%today%'=='Mon' rmdir Sun /S /Qif '%today%'=='Tue' rmdir Mon /S /Qif '%today%'=='Wed' rmdir Tue /S /Qif '%today%'=='Thu' rmdir Wed /S /Qif '%today%'=='Fri' rmdir Thu /S /Qif '%today%'=='Sat' rmdir Fri /S /Qif '%today%'=='Sun' rmdir Sat /S /Qpause
In the course of my work, I (amongst other things) delete a directory with yesterday's date if it exists and create a directory with today's date. I'm looking for a way to automate this (and, eventually, other things, but this is the starting point)
@echo offclsset today=%date:~-4%%date:~4,2%%date:~7,2%echo wscript.echo (date-1)>yesterday.vbsfor /f "delims==" %%D in ('cscript //nologo yesterday.vbs') do ( set yesterdate=%%D)set yesterdate=%yesterdate:~-4%%yesterdate:~4,2%%yesterdate:~7,2%del yesterday.vbsecho Todays date is %today%echo Yesterday's date was %yesterdate%If exist %userprofile%\desktop\%yesterdate% rd %userprofile\desktop\%yesterdate% /S /Q:: md %userprofile%\desktop\%today%
Or, I think you could use your cygwin to doCode: [Select]desktop="/cygdrive/c/Documents\ and\ Settings/carson/Desktop"
I think we need the OP to tell us1. His system's date format
2. Exactly how the folders in question are named for the date (given that the / character is illegal in a file or folder name.)
That is if he or she is still around?
Code: [Select]@echo offclsset today=%date:~-4%%date:~4,2%%date:~7,2%echo wscript.echo (date-1)>yesterday.vbsfor /f "delims==" %%D in ('cscript //nologo yesterday.vbs') do ( set yesterdate=%%D)set yesterdate=%yesterdate:~-4%%yesterdate:~4,2%%yesterdate:~7,2%del yesterday.vbsecho Todays date is %today%echo Yesterday's date was %yesterdate%If exist %userprofile%\desktop\%yesterdate% rd %userprofile\desktop\%yesterdate% /S /Q:: md %userprofile%\desktop\%today%
Microsoft Windows XP [Version 5.1.2600](C) Copyright 1985-2001 Microsoft Corp.C:\>cd c:\documents and settings\carson\desktopC:\Documents and Settings\carson\Desktop>dailysetupToday's date is 20090227Yesterday's date was 2009/209C:\Documents and Settings\carson\Desktop>
Todays date is 20090228Yesterday's date was 20090227C:\>
set yesterdate=%yesterdate:~-4%%yesterdate:~4,2%%yesterdate:~7,2%
Peculiar, what I get is QuoteTodays date is 20090228Yesterday's date was 20090227C:\>Please check that the format of the Set %yesterdate% command in your saved version is:Quoteset yesterdate=%yesterdate:~-4%%yesterdate:~4,2%%yesterdate:~7,2%
Also please confirm that the output of your %date% is "day mm/dd/yyyy"
@echo offecho Wscript.echo eval(WScript.Arguments(0))>evaluate.vbsfor /f "delims==" %%A in ('cscript //nologo evaluate.vbs "year(date-1)"') do set ydYear=%%Afor /f "delims==" %%A in ('cscript //nologo evaluate.vbs "month(date-1)"') do set ydMonth=%%Afor /f "delims==" %%A in ('cscript //nologo evaluate.vbs "day(date-1)"') do set ydDay=%%Afor /f "delims==" %%A in ('cscript //nologo evaluate.vbs "year(date)"') do set tdYear=%%Afor /f "delims==" %%A in ('cscript //nologo evaluate.vbs "month(date)"') do set tdMonth=%%Afor /f "delims==" %%A in ('cscript //nologo evaluate.vbs "day(date)"') do set tdDay=%%Adel evaluate.vbsif %ydMonth% LEQ 9 set ydMonth=0%ydMonth%if %tdmonth% LEQ 9 set tdmonth=0%tdmonth%if %ydDay% LEQ 9 set ydDay=0%ydDay%if %tdDay% LEQ 9 set tdDay=0%tdDay%set ydate=%ydYear%%ydMonth%%ydDay%set tdate=%tdYear%%tdMonth%%tdDay%echo Yesterday was %ydate%echo Today is %tdate%
Yesterday was 20090226Today is 20090227
@echo offclsset today=%date:~-4%%date:~4,2%%date:~7,2%echo wscript.echo (date-1)>yesterday.vbsfor /f "delims==" %%D in ('cscript //nologo yesterday.vbs') do ( set yesterdate=%%D)echo %yesterdate:~-4%echo %yesterdate:~4,2%echo %yesterdate:~7,2%echo.set yester=%yesterdate:~-4%%yesterdate:~4,2%%yesterdate:~7,2%del yesterday.vbsecho Todays date is %today%echo Yesterday's date was %yester%
Set yourself free from regional settings. Do it all in VBS with Evaluate.vbs (which I wrote!)
Dias has nailed it again but please run the following and post the outcome.Code: [Select]@echo offclsset today=%date:~-4%%date:~4,2%%date:~7,2%echo wscript.echo (date-1)>yesterday.vbsfor /f "delims==" %%D in ('cscript //nologo yesterday.vbs') do ( set yesterdate=%%D)echo %yesterdate:~-4%echo %yesterdate:~4,2%echo %yesterdate:~7,2%echo.set yester=%yesterdate:~-4%%yesterdate:~4,2%%yesterdate:~7,2%del yesterday.vbsecho Todays date is %today%echo Yesterday's date was %yester%Thanks
2009/209Todays date is 20090227Yesterday's date was 2009/209C:\Documents and Settings\carson\Desktop>
thats why i did it just for the day.since when you do the entire mkdir "%DATE%", you get seperate sub folders from the slashes in %DATE%
It's amazing how complicated some people seemed to make this solution!FOR /F "tokens=2,3,4 delims=/ " in ("%date%") do call :METHOD %%a %%b %%cset tdate=%3%2%1set/a ydate=%tdate% - 1echo %tdate%echo %ydate%returns:2009053120090530----------------Only Just noticed though that if you're at the beginning of the month, it'll return a 00 for the day...Little bit of error processing should sort that though...
happy?
C:\test>echo %date%Mon 06/01/2009C:\test>test.bat2009010620090036
how complex do you want this to be???
It's amazing how complicated some people seemed to make this solution!
I could abstract it out as much as I wanted, but it gets to the point where you may as well write a mini app.
Batches are great for speed, compatibility and simplicity. Once you're trying to do rocket surgery, use a proper scripting language and environment. *shrug*
how complex do you want this to be??? ...I could abstract it out as much as I wanted, but it gets to the point where you may as well write a mini app. Batches are great for speed, compatibility and simplicity. Once you're trying to do rocket surgery, use a proper scripting language and environment. *shrug*
@echo offcd %userprofile%\Desktopecho Wscript.echo eval(WScript.Arguments(0))>evaluate.vbsREM Set variables for three days ago, since it might be Monday.for /f "delims==" %%A in ('cscript //nologo evaluate.vbs "year(date-3)"') do set FriYear=%%Afor /f "delims==" %%A in ('cscript //nologo evaluate.vbs "month(date-3)"') do set FriMonth=%%Afor /f "delims==" %%A in ('cscript //nologo evaluate.vbs "day(date-3)"') do set FriDay=%%AREM Set variables for yesterdayfor /f "delims==" %%A in ('cscript //nologo evaluate.vbs "year(date-1)"') do set ydYear=%%Afor /f "delims==" %%A in ('cscript //nologo evaluate.vbs "month(date-1)"') do set ydMonth=%%Afor /f "delims==" %%A in ('cscript //nologo evaluate.vbs "day(date-1)"') do set ydDay=%%AREM Set variables for todayfor /f "delims==" %%A in ('cscript //nologo evaluate.vbs "year(date)"') do set tdYear=%%Afor /f "delims==" %%A in ('cscript //nologo evaluate.vbs "month(date)"') do set tdMonth=%%Afor /f "delims==" %%A in ('cscript //nologo evaluate.vbs "day(date)"') do set tdDay=%%AREM Clean this up now that we're done with it.del evaluate.vbsREM Pad the months and days with a leading 0 if necessary.if %FriMonth% LEQ 9 set FriMonth=0%FriMonth%if %FriDay% LEQ 9 set FriDay=0%FriDay%if %ydMonth% LEQ 9 set ydMonth=0%ydMonth%if %tdmonth% LEQ 9 set tdmonth=0%tdmonth%if %ydDay% LEQ 9 set ydDay=0%ydDay%if %tdDay% LEQ 9 set tdDay=0%tdDay%REM These aren't actually necessary; they just make things easier to read.REM We may do something with them later if/when this script does more than just create/deleteREM directories.set FriDate=%FriYear%%FriMonth%%FriDay%set ydate=%ydYear%%ydMonth%%ydDay%set tdate=%tdYear%%tdMonth%%tdDay%REM Remove Friday's directory if it exists.if exist %FriDate% rmdir /s /q %FriDate%REM Remove yesterday's directory if it exists.if exist %ydate% rmdir /s /q %ydate%REM Create today's directory if it doesn't already exist.if not exist %tdate% mkdir %tdate%