コマンドプロンプトでファイル名を編集する方法

このQ&Aのポイント
  • Windows7のコマンドプロンプトで、特定の拡張子(png)のファイル名にファイル作成日を追加する方法が分からないです。
  • ファイルを直接指定してのソースはできていますが、拡張子指定で処理したいです。
  • アドバイスをお願いします。
回答を見る
  • ベストアンサー

コマンドプロンプトでファイル名を編集したい

どなたか、ご存知の方教えてください。 以下の仕様の処理を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% ) よろしくお願い致します。

  • moxa
  • お礼率51% (71/137)

質問者が選んだベストアンサー

  • ベストアンサー
  • kteds
  • ベストアンサー率42% (1876/4424)
回答No.3

No.2の追記です。 質問は ファイル名_作成日付 でしたね。 powershell では下記のようになります。 foreach ($i in Get-ChildItem e:\wk1\*.png) { rename-item $i ($i.basename + "_" + ([DateTime]$i.creationtime).ToString("yyyyMMdd_HHmmss") + ".png") } 結果は添付画像のようになります。

moxa
質問者

お礼

どうもありがとうございます! まさか1行で出来るなんて・・・。 感動しました。 PowerShellの存在を初めて知りました。 今後勉強してみようと思います。

その他の回答 (2)

  • kteds
  • ベストアンサー率42% (1876/4424)
回答No.2

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

  • kteds
  • ベストアンサー率42% (1876/4424)
回答No.1

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"} ---結果は添付画像のようにファイル名が変更されています。 上図は変更前 下図は変更後 ※この例では 年月日_時分秒 のように変更しています。

関連するQ&A

  • テキストファイルに追加する

    こんにちは。 早速ですが、 http://www.yasch.com/asp/frame.asp?viewurl=sample.html を参考にしながらテキストファイルに追加出来るスクリプトを作成しているのですが、 Set WDateFile = objFile.OpenTextFile(Server.MapPath(Wk_FName), 2, TRUE) をSet WDateFile = objFile.OpenTextFile(Server.MapPath(Wk_FName), 8, TRUE) にするとテキストファイルの下の行に追加出来たのですが、これを上の行に追加させる事は出来るのでしょうか? データベースを使えばいいのかもしれませんが、まだまだ勉強不足のため思うように出来ません。申し訳ないです。 ご回答のほど宜しくお願い致します。

  • コマンドプロンプトで.batファイルを作っています。

    古いバックアップディレクトリを削除するバッチファイルを作りたいです。 cd /d e:\fileDir REM:【最終のディレクトリを削除】 for /F %F in ('dir /b /o:-d') do set fname=%F rmdir /s /q %fname%  をコマンドプロンプト画面に貼り付ければ上手く動作しますが*.batと名前を付けて保存したものをダブルクリックでは全く動作しません。  コマンドプロンプト上で実行するのとバッチファイルで実行することの違いについて調べてみましたがなかなか動作するものになりません。  どなたかご教示いただけないでしょうか    

  • コマンドプロンプト 日時を用いた計算

    こんにちは、お世話になります。 コマンドプロンプトを用いてファイルの制御を行おうと考えているのですが、 日付に特定の数値を減算した結果を制御するファイル名として扱いたいのですが、 日付に対して演算がうまく動きませんでした。 set FNAME=%date:~0,4%%date:~5,2%%date:~6,1% これで「20120221」を出力し、この日付数値に対して set /A SUM=FNAME+1 「SUM=20120221+1=20120222」という感じで計算させたいのですが、 どのようにすれば計算ができるでしょうか? 最終的には、 (1)日付を出力します。 (2)(1)で出した日付に数値を加えます。 (3)(2)で計算した数値をファイル名として使用してファイルのリネームやコピーを行います。 初歩的な質問で大変申し訳ないのですが、ご教授のほどよろしくお願いします。

  • コマンドプロンプトで

    コマンドプロンプトで dir > list.txt と書いたbatファイルを作成し実行すると、中にあるフォルダ・ファイルの一覧ができますが、中にあるフォルダ名のフォルダ・ファイル名までは取得することができません。 一番下フォルダのファイル名まで取得する方法はありますでしょうか? よろしくお願いします。

  • フォルダー内の複数ファイル名を一括で変名するbat

    フォルダー内の複数ファイル名を一括で変名するbatを教えてください。 batは、デスクトップに配置して 処理するフォルダーをD&Dして処理させる形式をとしたいです。 以下のような形式です。  No1 aaaa bbbb [com : *********].zip を  No1 aaaa bbbb.zip に変名する。   (*******は任意の文字列) 例えば、 No1 aaaa bbbb [com : taken2110221100014].zip であれば No1 aaaa bbbb.zip に変名する。 以下が参考になりそうなので https://oshiete.goo.ne.jp/qa/9263608.html 記事中の助言を元に以下のようにコードを修正してみましたが うまく処理できませんでした。 bat(test,bat,test2.bat)のどこを再修正すれば希望の処理ができますか ? 希望は、下記ですが 「batは、デスクトップに配置して 処理するフォルダーをD&Dして処理させる形式をとしたいです。」 batを修正してもこのbatでは、D&Dで処理することは可能で無い場合は アドバイス又は他の参考なりそうなURLを紹介ください。 '------------------------------------------ rem test.bat echo off for /F "delims=" %%f in ('dir /*.mp4') do call :sub "%%f" exit /*.mp4 :sub set fname=%~1 set n=0 :loop call set c=%%fname:~%n%,1%% set /a n=n+1 if "%c%"=="" goto :EOF if "%c%"=="[com" goto break goto loop :break set /a n=n-1 set ext=%~x1 call set newname=%%fname:~0,%n%%% call set newname=%newname%%ext% if "%newname%"=="" goto :EOF if "%newname:~0,1%"=="." goto :EOF ren "%fname%" "%newname%" goto :EOF '-------------------------------------- rem bat2.bat for /F "tokens=1* delims=[com" %%F in ('dir /b *.mp4') do echo move %%F[com%%G %%F.mp4 '--------------------------------------

  • apple scriptファイル名の一部のみ変更

    apple scriptにおいて、ファイル名変更の自動化を試みています。 ファイル名にabcという文字が含まれる場合、それらをdefに 変更する、というようなことがしたいのですが、 (001abc.txt -> 001def.txt 003abc0.txt -> 003def0.txt) apple scriptにおいて set oldName to name of aObj --- newNameを指定 set name of aObj to newName の上記でoldNameからnewNameをどう得たらよろしいでしょうか?

    • ベストアンサー
    • Mac
  • DOSコマンドでファイル名の一部を変更したい

    複数のフォルダ内に、下記のようなファイルがあります。 ABCD_aaaa_20091234567899_1_of_3.csv ABC_DDD_bbbb_20091234567899_2_of_3.csv AAA_ccccd_20091234567899_3_of_3.csv 作業内容:ファイル名の「2009xxxxxxxxxx」を「FY08_01」 に変更します。 現在のファイルの状態: ・「2009」の後の数字「xxxxxxxxxx」は共通で、10桁あります。 ・「2009xxxxxxxxxx」の前のテキストの文字数や内容は一致 していません。 ・「2009xxxxxxxxxx」の前後には必ず「_」(アンダースコア)があります。 ・「2009xxxxxxxxxx」の後は必ず「x_of_x」となっています。 そこでDOSコマンドこんな風に書いてみたのですが、構文エラーとなってしまいました。 ********* echo off for %%a in (*_*.csv) do ( set fname=%%a set fname=%fname:~-25,14="FY09_01"% ren %%a %fname% ) ********* Webで検索して他の方法もいろいろと試したのですが、余計にわからなくなってきてしまいました。setコマンドはワイルドカードが使えないので頭をかかえています。 どなたかご教示いただければ幸いです。 よろしくお願いします。

  • コマンドプロンプトのファイル指定

    ImageMagick初心者です。 ImageMagickという画像変換ソフトを使って「BMP画像」を「4bit グレースケールPNG画像」に変換しようとと思っています。 変換する際に、コマンドプロンプトでコマンドを入力して、変換対象のファイルを指定しようとしたのですが、ファイル名に半角スペースが含まれていて、正しく実行できません。 変換対象:「Tombo village.bmp」 出力対象:「Test.png」 ファイル名を変更する以外に変換する方法はないでしょうか? あと、ImageMagickで一度の操作で大量のファイルを変換するようなコマンドってありますか? 誰か教えてください! ■コマンドプロンプト実行結果■ C:\Users\[User Name]\Pictures\Folder>convert -colorspace gray -depth 4 Tombo village.bmp Test.png convert.exe: unable to open image `Tombo': No such file or directory @ error/blob.c/OpenBlob/2641. convert.exe: no decode delegate for this image format `Tombo' @ error/constitute.c/ReadImage/550. convert.exe: unable to open image `village': No such file or directory @ error/blob.c/OpenBlob/2641. convert.exe: no decode delegate for this image format `village' @ error/constitute.c/ReadImage/550. convert.exe: unable to open image `letters.bmp': No such file or directory @ error/blob.c/OpenBlob/2641. convert.exe: no images defined `Test.png' @ error/convert.c/ConvertImageCommand/3068. -------------------------となります。

  • Windows7 コマンドプロンプトについて

    DXFファイル名の変更を行いたいのですが、ある操作を繰り返していく内に下記の様なファイル名となってしまいました。 「*dxf.dwg.dxf」 ファイル名の拡張子を一つにしたく、「*dxf.dwg.dxf」→「.dxf」と変更する為、 コマンドプロンプトの「ren」コマンドを使用し下記の様なコマンドを作成しました。 ren *dxf.dwg.dxf *.dxf しかしファイル名は変わらないままでした。 試しに下記の様なコマンドを入力しました。 ren *.dxf *dwg すると、「dxfファイル」から「dwg」ファイルへとファイルの拡張子だけが変わりました。 何とか余分な「.dxf.dwg」の部分を一つのコマンドラインで簡単に消すことは出来ないでしょうか。 どなたか教えて頂けますでしょうか。 宜しくお願い致します。

  • コンパイルを実行しているのですが、ファイル名がでてきません。

    JAVA初心者です。ソースファイルを作成して、コンパイルを実行しているのですが、ファイル名がでてきません。 ファイルの作り方が間違ったのでしょうか?? 何か考えられる原因があれば教えてください。 それから、コンパイルにうまくファイル名を表示させるにはどうすればよいのでしょうか?