« 『xy = ?』を何となく計算してみた… | トップページ | 『ウイルスバスター』は、普段頑張ってくれるのだが、ごくごくまれに酷い事をする! »

2018年6月14日 (木)

バッチファイルで昨日の日付を得たい!

バッチファイルで、昨日バックアップしたファイルをダウンロードする処理を作りたい!

で、バックアップファイル名には、日付を使っているので…

昨日の日付が欲しいのだ!

バッチファイルだと現在の日付は、すんなりと取得できるのだが…

それ以外の日付を取得する処理がサポートされていない…。

で、組み込みの処理を検索すると…

メッチャ面倒!

特にうるう年の処理などが複雑にしている…。

出来れば、その辺もフォローした処理で一発で結果が欲しい…。

実は、それができるのが『PowerShell』!

でも『PowerShell』で処理を作りたくない!

何てワガママなのでしょう!(笑)

って訳で日付の計算だけを『PowerShell』に任せて他は、バッチ!

ってのを組んでみる事に!

どうやったらできるかな?

特にデータのやり取りをするんだ?

そうだ、データのやり取りにファイルを介せば何とかなるかも…

確かにDOS窓から『PowerShell』を実行できるし…。

って作ってみた。

test.bat
----------------------------------------
@echo off
call powershell -Command "(Get-Date).AddDays(-1).ToString(\"yyyyMMdd\")">$.tmp
set /p file_date=<$.tmp
del $.tmp
set file_name=sample-%file_date%.tmp
echo %file_name%
----------------------------------------

これで、任意に日付を操作できるぞ!

素敵だ!

因みに『PowerShell』に文字コードは、『UTF-8』。

なので、そのままファイル出力をすると『UTF-8』なんですね。

で、バッチファイルでは、『S-JIS』なので使えないのです…。

このコマンドだと出力されるファイルは、『UTF-8』なんですね。
call powershell -Command "(Get-Date).AddDays(-1).ToString(\"yyyyMMdd\")>$.tmp"

でも、チョット外すだけで、『S-JIS』になるのだった…。
call powershell -Command "(Get-Date).AddDays(-1).ToString(\"yyyyMMdd\")">$.tmp

これが分かるまで結構ハマった…。

他にもリダイレクションでスペースを入れないなど…。

微妙です!

でも、雲泥の差です!

トラップが一杯です!

|

« 『xy = ?』を何となく計算してみた… | トップページ | 『ウイルスバスター』は、普段頑張ってくれるのだが、ごくごくまれに酷い事をする! »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: バッチファイルで昨日の日付を得たい!:

« 『xy = ?』を何となく計算してみた… | トップページ | 『ウイルスバスター』は、普段頑張ってくれるのだが、ごくごくまれに酷い事をする! »