2016-08-15 23 views
0

こんにちは、ありがとうございました!私は.xlsxファイルの最後に日付を追加するために使用しているバッチスクリプトに関する専門家の助けが必要です。バッチファイル - 計算された日付をファイルの最後に追加

現在のスクリプトが正常に動作し、ファイルの最後に現在の日付が追加されますが、現在の日付から12日を差し引いて、現在の日付から6日を差し引いて末尾に追加します。次の形式でのファイル:

setlocal enabledelayedexpansion 

for %%F in ("C:\test*.xlsx") do (set "MDate=%%~tF" 
set "ParsedDate=!MDate:~6,4!!MDate:~0,2!!MDate:~3,2!" copy %%F%%~dpnF!ParsedDate!%%~xF.new) 

for %%F in ("C:\test*.xlsx") do (del %%F) 

ren "C:\test*.new" *. 

exit 

Test 20160807-20160813.xlsx. 

だから、そのファイル名Test、その後、YYYYMMDD (minus 12) - YYYYMMDD (minus 6).xlsx

ここでは、私は現在、それが現在の日付を取得します使用しているスクリプトです

出力はTest20160815.xlsxですが、Test 20160807-20160813.xlsxが必要です。誰かが私が間違っていることで私を助けることができますか? PowerShellで

+4

これは、日付計算をバッチ(シェルスクリプト)で行うのではなく、PowerShellを使用する方がはるかに簡単です。 –

+0

入力Billのおかげで、PowerShellでソリューションを提供できますか? –

+0

VBScriptやJavaScriptのような真の日付/時刻算術をサポートする他のスクリプトを[tag:batch-file]に埋め込むことができます。もちろん、PowerShellを実装することもできます。 – aschipfl

答えて

0

簡単な例:PowerShellで

$today = [DateTime]::Today 
$date1 = $today.AddDays(-12) 
$date2 = $today.AddDays(-6) 
"Test {0:yyyyMMdd}-{1:yyyyMMdd}.xlsx" -f ($date1),($date2) 

、日付は文字列ではありません。それらはファーストクラスのオブジェクトです。この例では、$todayに今日の日付が割り当てられます([DateTime]オブジェクト、文字列ではありません)。 $date1は今日の日付の12日前に取得し、$date2は今日の日付の6日前に取得します。最後のコード行は、PowerShellの形式(-f)演算子を使用して、目的の形式の日付を含むカスタマイズされた文字列を出力します。

関連する問題