アプリ版:「スタンプのみでお礼する」機能のリリースについて

XP_HEsp3です。
バッチの書方で教えてください。

1.ファイルのタイムスタンプを比較する方法
次のような処理で更新日時が新しければ、
if hoge.txt-timestamp > hoge.utf8-timestamp (
nkf -w8Lu hoge.txt > hoge.utf8
)
というのはどう書けばよいでしょうか。

2.解説をお願いします。
set t=%time:~0,5%
mkdir %date:/=_%_%t::=_%
timeとdateの出力を利用する、出力にはコロンが入っている。
・・・・位しか分りません。
実行してみてアンダーバーの意味は分りました。
~0,5% とスラッシュが分りません。

A 回答 (5件)

とりあえず2番だけ。



>set t=%time:~0,5%

time の出力のうち、先頭から5文字分を取り出して 環境変数 t に入れます。

>mkdir %date:/=_%_%t::=_%

ディレクトリを作成します。ディレクトリ名のうち 「%date:/=_%」を [A]部、「%t::=_%」を[B]部とすると、
[A]_[B] というディレクトリを作ります。

[A]部は、date の出力のうち、"/"記号を"_"に置換したもの
[B]部は、環境変数 t のうち":"記号を"_"に置換したもの

コマンドプロンプトを起動し、SET /?
と入力すると、説明が見えますよ。
    • good
    • 0

1番のヒント。


SET txtfile=hoge.txt-timestamp
SET utffile=hoge.utf8-timestamp
SET txt=...
SET utf=...
IF txt GTR utf (

)
...の部分は、2.の解説を元に考えてみてください。
GTR については、コマンドプロンプトから、IF /?
で説明が見れます。
    • good
    • 0

ファイルのタイムスタンプの取得は FORで取得可能でしょう



for %%I in (hoge,txt) do set txt=%%~tI
for %%I in (hoge.utf8) do set utf=%%~tI
とすれば 日付と時間が環境変数 txtとutfに取り出せますよ

コマンドラインで確かめる場合は %%を %に置き換えてください
    • good
    • 0
この回答へのお礼

ご回答感謝です。
コンソールで
for %I in (hoge.txt) do set txt=%~tI
for %I in (hoge.utf8) do set utf=%~tI
IF txt GTR utf (touch test)
としても駄目ですね。
日付と時間が環境変数txtとutfに格納されるのは確認しました。
この値を / と : を取除いて単純な整数にすればよいのでしょうか。

お礼日時:2008/09/09 11:59

あ、すみません、こうです。


IF %txt% GTR %utf% (touch test)
    • good
    • 0
この回答へのお礼

%%で括るべきなのを私が当然気付くべきでしたm(_)m。

しかし、
-------------
C:\temp>set txt
txt=2008/09/09 11:33
C:\temp>set utf
utf=1997/01/01 11:11
C:\temp>IF %txt% GTR %utf% (touch test)
11:33 の使い方が誤っています。
--------------
となるので、/と:とスペースを取除くべきかと。
その方法を教えてください。
set /? の説明は私には難しすぎます。

お礼日時:2008/09/09 20:26

スペースなどを削除と考えるより ""でくくってしまった方が簡単でしょう



if "%txt" GTR "%utf%" ( touch %utfName% )
といった具合です
    • good
    • 0
この回答へのお礼

ありがとうございます。仰有るとおりでした。
if "%txt%" GTR "%utf%" touch test.log
if "%txt%" GTR "%utf%" (nkf -eLu hoge.txt > hoge.euc)
どちらも条件が真の場合のコマンドが実行されました。
""で括れば大小を比較するのですね。
不思議です。
ExcelのDate関数は整数値を返すので、それとの連想で、整数値に整形すべきと考えました。

お礼日時:2008/09/09 23:20

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