web-dev-qa-db-ja.com

日付と時刻を指定してコマンドラインリネームファイル

プロジェクトが前進しているので、物事を行うための.batファイルを作成するのは中毒性があります。一定の間隔でsomefile.txtを保存できるようになりました。次に、日時を追加してsomefile.txtの名前を変更し、一意のファイル名を作成します。

_ren somefile.txt somefile_%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~3,2%%date:~-4,4%.txt
_

例として、上記のコードは_somefile.txt_をsomefile_1317_13022011.txt (1317hrs on 13th February 2011)に名前変更しました

走った

_ren somefile.txt somefile_%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~7,2%%date:~-4,4%.txt 
_

昨日、真夜中まで正常に実行され、その後、クラッシュ(構文エラー)しましたが、正しい日付の12022011ではなく、日付(2011年1月12日)として12012011として保存されていました。

現在のバージョンは真夜中を過ぎて実行されますか?英国と米国の日付形式を混同していますか?

13
user611620

アニムソンはそれを行うにはまともな方法を提供しますが、それを理解する助けはありません。私は探し続けて、次のコマンドで フォーラムスレッド に出会いました:

Echo Off
IF Not EXIST n:\dbfs\doekasp.txt GOTO DoNothing

copy n:\dbfs\doekasp.txt n:\history\doekasp.txt

Rem rename command is done twice (2) to allow for 1 or 2 digit hour,
Rem If before 10am (1digit) hour Rename starting at location (0) for (2) chars,
Rem will error out, as location (0) will have a space
Rem and space is invalid character for file name,
Rem so second remame will be used.
Rem
Rem if equal 10am or later (2 digit hour) then first remame will work and second will not
Rem as doekasp.txt will not be found (remamed)


ren n:\history\doekasp.txt doekasp-%date:~4,2%-%date:~7,2%-%date:~10,4%_@_%time:~0,2%h%time:~3,2%m%time:~6,2%s%.txt
ren n:\history\doekasp.txt doekasp-%date:~4,2%-%date:~7,2%-%date:~10,4%_@_%time:~1,1%h%time:~3,2%m%time:~6,2%s%.txt

私は常に年を最初にYYYYMMDDと名付けますが、時間を追加したかったです。ここでは、(スペース)が無効な文字であるため、0,2が機能せず、1,1が機能する理由を示していることがわかります。これが問題に私の目を開きました。また、デフォルトでは、24時間モードにしています。

私は終わりました:

ren Logs.txt Logs-%date:~10,4%%date:~7,2%%date:~4,2%_%time:~0,2%%time:~3,2%.txt
ren Logs.txt Logs-%date:~10,4%%date:~7,2%%date:~4,2%_%time:~1,1%%time:~3,2%.txt

出力:

Logs-20121707_1019
15
silentpete

すべてのソリューションが最も単純な修正を見逃しているため、古いスレッドを掘り起こします...

時間変数の置換によりファイル名にスペースが生じ、ファイル名の最後の部分がコマンドのパラメーターとして扱われるため、失敗します。

最も簡単な解決策は、引用符で希望のファイル名を囲むだけです"filename"

その後、任意の日付パターンを使用できます(/\、...などの不正な文字を除きます)

日付の逆順YYYYMMDD-HHMMをお勧めします。

ren "somefile.txt" "somefile-%date:~10,4%%date:~7,2%%date:~4,2%-%time:~0,2%%time:~3,2%.txt"
8
SeeMoreGain

次はあなたの正しい解決策でなければなりません

ren somefile.txt  somefile_%time:~0,2%%time:~3,2%-%DATE:/=%.txt
5
Raj Gohil

上記を取りましたが、1時間後にスペースを入れていたため、名前変更コマンドで構文エラーが発生したため、もう1つ追加する必要がありました。私が使用した:

    set HR=%time:~0,2%
    set HR=%Hr: =0% 
    set HR=%HR: =%
    rename c:\ops\logs\copyinvoices.log copyinvoices_results_%date:~10,4%-%date:~4,2%-%date:~7,2%_%HR%%time:~3,2%.log 

これにより、必要な形式が提供されました:copyinvoices_results_2013-09-13_0845.log

4
Roger

_%time:~0,2%_の問題は24時間形式に設定できず、0(1-9)ではなくspace(1-9)で終了しました

で回る:

セット_HR=%time:~0,2%_

HR=%Hr: =0% (replace space with 0 if any <has a space in between : =0>)を設定します

次に_%time:~0,2%_を_%HR%_に置き換えます

がんばろう

3
James Chong