プロが教えるわが家の防犯対策術!

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

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

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

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


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

A 回答 (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"
    • good
    • 6

ファイル名の先頭部をチェックして、


【文字列】が存在すれば変更しない(存在しなければ実行する)
という条件( if ステートメント)を記述すればいいです。
---
scriptは自分で考えてください。

この回答への補足

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

補足日時:2014/04/21 07:29
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A