2013-11-29 51 views
1

我有一個具有以下內容的批處理文件:代碼是獲取當前日期,而不是在批處理腳本以前的日期

set m=%date:~-7,2% 
set /A m -= 1 
set DATE_DIR=%date:~-10,2%-%m%-%date:~-4,4% 

echo 'DATE_DIR' 
![enter image description here][1] 
:: First delete all snapshots from this day last week 
:: Create a file with all scheduled snapshots 
ec2-describe-snapshots|find /i "%DATE_DIR%: Daily Backup for" 

我已經設置了DATE_DIR參數,以昨天的日期,所以EC2-描述語句應獲取該是在昨天創建快照,但它是現今的取數據!

任何引線被理解。

謝謝

+0

這不是簡單計算零1天純批次。用於計算日期的VBS腳本是可靠和強大的 - 或者是一個PowerShell腳本。 – foxidrive

+0

好的。如果可以通過編輯將它們添加到您的問題中,我需要查看'ec2-describe-snapshots'和'「%DATE_DIR%」'的輸出。 – foxidrive

回答

2

此批處理文件使用powershell獲取昨天的日期。

@echo Off 
:: change -1 to 0 for todays date. 
for /f "delims=" %%a in ('"powershell get-date((get-date).addDays(-1)) -uformat "%%Y%%m%%d" "') do set "d8=%%a" 
echo yesterday was %d8% 
pause 

這是用於計算不同天數的VBS批處理腳本。您可以更改-1到0的今天,或-100 100天前,或+200 200天從現在開始,等

@echo off 
call :routine today -1 
set "date_dir=%yy%-%mm%-%dd%" 
echo '%DATE_DIR%' 

echo :: First delete all snapshots from this day last week 
echo :: Create a file with all scheduled snapshots 
pause 
pause 
call ec2-describe-snapshots|find /i "%DATE_DIR%">"%EC2_HOME%\Working\SnapshotsDOW.txt" 
echo :: Delete snapshots for older backups 
pause 
pause  
for /F "tokens=2" %%i in ('type "%EC2_HOME%\Working\SnapshotsDOW.txt" ') do call ec2-delete-snapshot "%%i" 

:: Now create a snapshot for every attached volume to every instance 
:: Create a file with all attached volumes 
::call ec2-describe-volumes|find /i "attached">"%EC2_HOME%\Working\ActiveVolumes.txt" 

echo :: Create a file with all instances 
pause 
pause  
call ec2-describe-instances|find /i "TAG"|find /i "Name">"%EC2_HOME%\Working\InstanceNames.txt" 
echo :: Create snapshots of all attached volumes 
pause 
pause  
for /F "tokens=2,3" %%d IN (' type "%EC2_HOME%\Working\ActiveVolumes.txt" ') do for /F "tokens=3,5*" %%a IN (' type "%EC2_HOME%\Working\InstanceNames.txt" ') do if %%a EQU %%e call ec2-create-snapshot "%%d" -d "%DATE_DIR%: Daily Backup for %%b (VolID:%%d InstID:%%e)" 
echo Done 
pause 


goto :EOF 

:routine 
setlocal 
set date1=%1 
set qty=%2 
set separator=%~3 
if /i "%date1%" EQU "TODAY" (set date1=now) else (set date1="%date1%") 
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%qty%,%date1%) 
echo>>"%temp%\%~n0.vbs" d=weekday(s) 
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^&_ 
echo>>"%temp%\%~n0.vbs"   right(100+month(s),2)^&_ 
echo>>"%temp%\%~n0.vbs"   right(100+day(s),2)^&_ 
echo>>"%temp%\%~n0.vbs"   d 
for /f %%a in ('cscript //nologo "%temp%\%~n0.vbs"') do set result=%%a 
del "%temp%\%~n0.vbs" 
endlocal& (
set "YY=%result:~0,4%" 
set "MM=%result:~4,2%" 
set "DD=%result:~6,2%" 
set "daynum=%result:~-1%" 
) 
set "day=%YY%%separator%%MM%%separator%%DD%" 
+0

我已經在附加批處理腳本的命令BLAT接近尾聲,但其沒有工作,腳本工作正常 –

相關問題