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

どなたか、ご存知の方教えてください。

以下の仕様の処理をWindows7にて、コマンドプロンプトで行おうとしています。
ですが、ファイルの名前と作成日を変数にセットする所(以下のソースの2行目、3行目)がうまくいっていないようです。
アドバイスをお願いできますでしょうか?
できればその後もアドバイス頂けたらと・・・思います。

ファイル名を直接指定してのソースはできたんですが、
「*.png」という拡張子を指定し処理としたいです。

<仕様>
「実行フォルダの中にある、特定の拡張子(png)のファイルの
名前にファイル作成日を追加する」

<実行例>
ファイル名:a.png
ファイル作成日:2014/10/01 10:05:01

実行後ファイル名:a_2014100110.png

<ソース(未完成)>
for %%F in ( *.png ) do (
SET fname=%%~nF
SET wktime=%%~tF

SET ftime = %wk1:~0,4%%wk1:~5,2%%wk1:~8,2%
SET newname = %fname%_%ftime%.png
REN %%F %newname%
)

よろしくお願い致します。

A 回答 (3件)

No.2の追記です。


質問は ファイル名_作成日付 でしたね。
powershell では下記のようになります。
foreach ($i in Get-ChildItem e:\wk1\*.png) { rename-item $i ($i.basename + "_" + ([DateTime]$i.creationtime).ToString("yyyyMMdd_HHmmss") + ".png") }
結果は添付画像のようになります。
「コマンドプロンプトでファイル名を編集した」の回答画像3
    • good
    • 0
この回答へのお礼

どうもありがとうございます!
まさか1行で出来るなんて・・・。
感動しました。

PowerShellの存在を初めて知りました。
今後勉強してみようと思います。

お礼日時:2014/10/31 20:01

No.1の追記です。


次のように
rename先に拡張子 .png を追加するように書けば 1行で処理できます。
foreach ($i in Get-ChildItem e:\wk1\*.png) { rename-item $i (([DateTime]$i.creationtime).ToString("yyyyMMdd_HHmmss") + ".png") }
    • good
    • 0

w7環境ならpowershellが標準で使用できますので、


コマンドプロンプトにこだわらずに使ってみてはどうでしょうか。
powershellは全てのコマンドを含んでいます。
---powershellでの例(わずか2行で済みます)
foreach ($i in Get-ChildItem e:\wk1\*.png) { rename-item $i ([DateTime]$i.creationtime).ToString("yyyyMMdd_HHmmss") }
dir e:\wk1\ | rename-item -newname {$_.name + ".png"}
---結果は添付画像のようにファイル名が変更されています。
上図は変更前
下図は変更後
※この例では 年月日_時分秒 のように変更しています。
「コマンドプロンプトでファイル名を編集した」の回答画像1
    • good
    • 0

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