2017-04-12 3 views
-4

私はPowerShell "(Get-Date).AddDays(-7).ToString('ddMMyyyy')"をバッチスクリプトで使用しています。powershellでGet-Dateの変数instedを使用

の代わりに変数を使用したい場合は、Get-Date関数を使用します。出来ますか?

ADateは変数名です!編集

示唆したように、私のスクリプトは次のとおりです。

For /F UseBackQ %%A In (
    `PowerShell "(Get-Date).AddDays(-7).ToString('ddMMyyyy')"` 
) Do Set "Freq=%%A" 

Adateファイル名から来ている、と16112016のような値を持つ単純な文字列です。

+0

あなたの日付変数の形式は何ですか?単純な文字列ですか? ISO8601文字列ですか?タイムスタンプ? –

+0

@RemyGrandinその文字列「16112016」(2016年11月16日) – Ashu

+0

あなたは本当に達成しようとしていますか?今日の日付に基づいて日付を計算するのではなく、ハードコードされた日付を使用しますか? – vonPryz

答えて

0

次が知られているファイルのプロパティから最終更新時間がかかり、7日以前の日付の変数を作成し、(当然、必要に応じてC:\Test\TestFile.extを変える)

For /F UseBackQ %%A In (
    `PowerShell "((gi 'C:\Test\TestFile.ext').LastWriteTime).AddDays(-7).ToString('ddMMyyyy')"` 
) Do Set "ADate=%%A" 

編集

次の例では、既知の形式の日付文字列、(この場合、2つの変数で提供されます)。その後、7日間を減算し、日付オブジェクトにその文字列を変換し、新しい%ADate%変数に文字列に戻ってそれを設定します:あなたはファイルにPowerShellコマンドの出力を保存し、そのファイルを読み込むことができ

@Echo Off 
Set "DateStr=16112016" 
Set "DFormat=ddMMyyyy" 

For /F UseBackQ %%A In (`Powershell^ 
"([datetime]::ParseExact('%DateStr%','%DFormat%', [System.Globalization.CultureInfo]::CurrentCulture)).AddDays(-7).ToString('%DFormat%')" 
`) Do Set "ADate=%%A" 
Echo(%ADate% 

Timeout -1 
+0

ここ(Get-Date)の代わりに、ファイル名から値を取得しているVariableを使用したいと思います。 – Ashu

+0

私はそれに応じて私の答えを更新しました、私の前提が間違っている場合は、あなたの仕事をより良く説明してください。 – Compo

+0

ビンゴ...!それは期待どおりに動作しているが、私は質問がある!なぜ私たちはそれを使用しないと "DFormat"を使用していますか? – Ashu

2

あなたはバッチ変数に外部コマンドの出力を得るためにforループを使用する必要があります。

@echo off 
for /f "usebackq tokens=*" %%d in (`powershell "..."`) do set "adate=%%d" 
echo %adate% 

usebackqとバッククォートはちょうどので、あなたがネストされた単一引用符をエスケープする必要はありませんされていますあなたのコマンド文字列。

+0

OPは元の質問を編集して、あなたの提案を1つのコメントで追加しましたので、あなたの答えは今や意味がありません... ** ':/' **(私は質問を下げ、この回答をupvoted) – Aacini

0

その一時ファイルを削除してください。

PowerShell "(Get-Date).AddDays(-7).ToString('ddMMyyyy')" >temp.txt 
    set /p myVarDate= < date_Shell.txt 
    echo Date from Shell %myVarDate% 
    del temp.txt 
0

私は私の水晶玉を持って、それを尋ねた:「?ソリューションはここにあるもの」、そして、それは答えた:「

PowerShell "(Get-Date -Date '!Adate:~4!-!Adate:~2,2!-!Adate:~0,2!').AddDays(-7).ToString('ddMMyyyy')" 

によって

PowerShell "(Get-Date).AddDays(-7).ToString('ddMMyyyy')" 

変更」が、私はそれが話しているもの見当がつかない約! ;)

関連する問題