こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

フォルダにあるファイル全てに対して、ファイル名の先頭に文字列を挿入するバッチファイルを作っています。
対象のファイルは、主にエクセル、ワード、パワーポイント、PDFですが、ファイルの種類に関係なく、全てのファイルに対して、ファイル名の先頭に文字列を挿入したいです。

@echo off
for %%i in (*) do ren "%%i" "【文字列】%%i"
pause

として文字列の挿入自体はできました。
しかし、このファイルを2回実行すると、ファイル名の先頭に【文字列】【文字列】と重複して挿入されてしまうので、すでに挿入済みのファイルに対しては実行しないようにしたいのですが、うまくいきません。

また、サブフォルダ内にあるファイルに対しても同様の処理を適用したいです。
どのように記述すればよいでしょうか。


リネームソフトを使えればよいのですが、フリーソフト等はインストールできない環境ですので、できればバッチファイルを記述して対応したいのです。
OSはウインドウズ7です。

投稿日時 - 2014-04-20 20:29:28

QNo.8562377

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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"

投稿日時 - 2014-04-23 12:39:19

ANo.1

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

投稿日時 - 2014-04-21 05:59:11

補足

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

投稿日時 - 2014-04-21 07:29:19

あなたにオススメの質問