dポイントプレゼントキャンペーン実施中!

日付をファイル名に出力したいと思い 以下のバッチを作りました。
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

A 回答 (2件)

>英語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
    • good
    • 0

http://www.atmarkit.co.jp/fwin2k/win2ktips/419ba …

ここらへんからの応用ですかね?
こういった作業をしたことはないのですが……。

>言語を英語に変更すると

C:\>echo %date%
11/10/2010 Wed
こんなんなりました。
これで、後ろから切り出すと…
C:\>echo %date:~-10%
0/2010 Wed
…これでは、ファイル名として使用できませんよね?

言語設定を確認して書き換えるようにするくらいしか浮かばないですねぇ。

対処方法が…出てこないです。
すみませんが。

# Windowsでそういう処理やらないしなぁ…。
# Cで組めばサクっと処理できますが…親プロセス(コマンドプロンプト)の環境変数、操作できたっけな…
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!