- 締切済み
ファイル名に日時挿入バッチファイル
日付をファイル名に出力したいと思い 以下のバッチを作りました。 20101109.txt というファイルが作成されます。 下の方式で、日本語OSだとログが出力されるのですが、言語を英語に変更するとログが出力できません。(例 地域の言語オプションで変更) 英語OSで 時刻が12時間表記の場合にもログが出力されるにはどう書けばいいのか教えてもらえますでしょうか? 実際に書いていただけると助かります・・・ よろしくお願いします。 @echo off set dt=%date:~-10% set tm=%time: =0% set fname=C:\test\test#%dt:~0,4%%dt:~5,2%%dt:~8,2%%.txt echo test >> %fname% 2>>&1
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- utakataXEX
- ベストアンサー率69% (711/1018)
>英語OSで 時刻が12時間表記の場合 ログの書式が YYYYMMDD であれば、とりあえず、時間は関係ないですよね? 書式の差を環境変数からは取得できないので、%DATE% の値を正規表現を使って日付書式を判別する、と言うのでどうでしょう。 以下は US か JP かを判別しています。 YYYY/MM/DD でも MM/DD/YYYY でも TEST#yyyymmdd.txt を出力可能です。 @echo off REM 書式は気にせず、まずはDATEを丸ごと格納 set dt=%date% REM 日付書式がYYYY/MM/DDかかMM/DD/YYYYかを判別する echo %dt% | findstr -b [0-9][0-9][0-9][0-9]/[0-9][0-9]/ >nul if "%ERRORLEVEL%" == "0" set dtFmt=JP echo %dt% | findstr -b [0-9][0-9]/[0-9][0-9]/ >nul if "%ERRORLEVEL%" == "0" set dtFmt=US REM 日付書式に合わせてdtをセットしなおす if "%dtFmt%" == "JP" set dt=%dt:~0,4%%dt:~5,2%%dt:~8,2% if "%dtFmt%" == "US" set dt=%dt:~6,4%%dt:~0,2%%dt:~3,2% set tm=%time: =0% set fname=C:\test\test#%dt%.txt echo test >> %fname% 2>>&1
- Wr5
- ベストアンサー率53% (2173/4061)
http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html ここらへんからの応用ですかね? こういった作業をしたことはないのですが……。 >言語を英語に変更すると C:\>echo %date% 11/10/2010 Wed こんなんなりました。 これで、後ろから切り出すと… C:\>echo %date:~-10% 0/2010 Wed …これでは、ファイル名として使用できませんよね? 言語設定を確認して書き換えるようにするくらいしか浮かばないですねぇ。 対処方法が…出てこないです。 すみませんが。 # Windowsでそういう処理やらないしなぁ…。 # Cで組めばサクっと処理できますが…親プロセス(コマンドプロンプト)の環境変数、操作できたっけな…