Come get il valore della data in commandline

Devo fare un command che prende la data di ieri e lo costruisce in un path di file come questo:

copy "Something 2010-12-06\*.zip" "d:\Copy\" 

where 2010-12-6 è la data di ieri in formato yyyy-mm-dd .

Sulla base di un link in risposta, ho trovato questa soluzione, che è vicino a quello che voglio, ma non proprio:

 For /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set cdate=%%c-%%b-%%a) echo "Backup Set*\Backup Files %cdate% *\*.zip" 

Questo mi dà la data di oggi, Come posso get la data di ieri?

Questo è veramente disordinato al momento, ma funziona. Cercherò di denominare le cose correttamente e di riordinarla più tardi stasera, a less che qualcun altro voglia modificare la mia risposta.

 @echo off call :GetDate year month day echo/Today is: %year%-%month%-%day% goto :part2 :GetDate yy mm dd setlocal ENABLEEXTENSIONS set t=2&if "%date%z" LSS "A" set t=1 for /f "skip=1 tokens=2-4 delims=(-)" %%a in ('echo/^|date') do ( for /f "tokens=%t%-4 delims=.-/ " %%d in ('date/t') do ( set %%a=%%d&set %%b=%%e&set %%c=%%f)) endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :eof :part2 call :DateToDays %year% %month% %day% days echo/It has been %days% days since 1970-01-01 goto :part3 :DateToDays %yy% %mm% %dd% days setlocal ENABLEEXTENSIONS set yy=%1&set mm=%2&set dd=%3 if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%) set /a dd=100%dd%%%100,mm=100%mm%%%100 set /az=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2 set /aj=j/5+dd+y*365+y/4-y/100+y/400-2472633 endlocal&set %4=%j%&goto :eof :part3 set /a yesterday=%days%-1 :part4 call :DaysToDate %yesterday% yy mm dd echo/Yesterday was %yy%-%mm%-%dd% goto :copy :DaysToDate %days% yy mm dd setlocal ENABLEEXTENSIONS set /aa=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a set /ad=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5 set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10 (if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%) endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :eof :copy copy "Something %yy%-%mm%-%dd%\*.zip" "d:\Copy\" :eof 

Fonte degli snippet di script che ho usato.

Questo post riguarda l'acquisizione della data in qualsiasi formato che ti piace in una variabile: http://www.tech-recipes.com/rx/956/windows-batch-file-bat-to-get-current-date-in- MMGGAAAA-formato /

la sottrazione e l'uso variabile è qui: http://commandwindows.com/variables.htm

che dovrebbe farlo …

Il mio formato di date sembra questo:

 E:\>date /t Wed 10/17/2012 

Questo funziona per il mio formato:

 E:\>echo %date:~10,4%-%date:~4,2%-%date:~7,2% 2012-10-17