• 締切済み

バッチファイルでファイル名に文字列を挿入したい。

フォルダにあるファイル全てに対して、ファイル名の先頭に文字列を挿入するバッチファイルを作っています。 対象のファイルは、主にエクセル、ワード、パワーポイント、PDFですが、ファイルの種類に関係なく、全てのファイルに対して、ファイル名の先頭に文字列を挿入したいです。 @echo off for %%i in (*) do ren "%%i" "【文字列】%%i" pause として文字列の挿入自体はできました。 しかし、このファイルを2回実行すると、ファイル名の先頭に【文字列】【文字列】と重複して挿入されてしまうので、すでに挿入済みのファイルに対しては実行しないようにしたいのですが、うまくいきません。 また、サブフォルダ内にあるファイルに対しても同様の処理を適用したいです。 どのように記述すればよいでしょうか。 リネームソフトを使えればよいのですが、フリーソフト等はインストールできない環境ですので、できればバッチファイルを記述して対応したいのです。 OSはウインドウズ7です。

みんなの回答

  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.2

morcerfさん、こんな感じでいかがでしょうか? 表示されたファイルが希望通りでしたら、2行目の do echo ren のecho を削除して実行してください。 @echo off for /F "delims=" %%i in ('dir /s /b /a:-d * ^|findstr /v "【文字列】"') do echo ren "%%i" "【文字列】%%~nxi"

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

ファイル名の先頭部をチェックして、 【文字列】が存在すれば変更しない(存在しなければ実行する) という条件( if ステートメント)を記述すればいいです。 --- scriptは自分で考えてください。

morcerf
質問者

補足

ifを使ってチェックすればいいというのは考えていたのですが、ファイル名の先頭だけ比較する記述の仕方が分からずうまくいっていません。 できれば先頭の文字列を比較する方法を教えて頂きたいです。

関連するQ&A