- ベストアンサー
DOSのバッチファイルについての質問です。
DOSのバッチファイルについての質問です。 フォルダ内のファイルネームを一括変更したいと考えています。 変更したい文字がたくさんあり、その都度インプットして処理したいと思い 下記のようなバッチを組んだのですが上手く動きません。 何かいい方法があればご教授下さい。よろしくお願いします。 echo off SET /P word= for %%a in (*%word%*) do call :sub "%%a" exit /b :sub set fname=%~1 set fname=%fname:%woad%=ああ% ren %1 "%fname%" goto :EOF
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
call set fname=%%fname:%word%=ああ%%
その他の回答 (2)
- foomufoomu
- ベストアンサー率36% (1018/2761)
たんに下から3行目の文の2番目の=の前の%が余分なだけではないでしょうか。 set fname=%fname:%woad%=ああ% 誤 set fname=%fname:%woad=ああ% 正
補足
回答ありがとうございます。 当方で set fname=%fname:%woad=ああ% に変更し いい1.TXT をドロップし、インプットを "いい" てみたところ、元のファイルネームが何かにかかわらず word=ああ に変更されてしまう様です。拡張子も消えます。 ああ1.TXT になってほしいのですが・・・ 変数は使えないんでしょうか
- bin-chan
- ベストアンサー率33% (1403/4213)
下から3行目 set fname=%fname:%woad%=ああ% は、原文ママですか? set fname=%fname:%word%=ああ%
補足
早い回答ありがとうございます。 早速ですが ママではありません 本来は%word%の文字を消したいので set fname=%fname:%word%=% こうなります。 ちなみに ↓これだと上手くいきます。 echo off for %%a in (*ああ*) do call :sub "%%a" exit /b :sub set fname=%~1 set fname=%fname:ああ=いい% ren %1 "%fname%" goto :EOF (フォルダ内の"ああ"が含まれる文字を検索し、"いい"に変更する) SET /P word= つまり この命令で検索文字を毎回任意で変更したいわけです。 何とかなりますでしょうか
お礼
出来ました!ありがとうございます、感動しました。