• ベストアンサー

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

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

call set fname=%%fname:%word%=ああ%%

uheri
質問者

お礼

出来ました!ありがとうございます、感動しました。

その他の回答 (2)

  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.2

たんに下から3行目の文の2番目の=の前の%が余分なだけではないでしょうか。 set fname=%fname:%woad%=ああ%  誤 set fname=%fname:%woad=ああ%  正

uheri
質問者

補足

回答ありがとうございます。 当方で set fname=%fname:%woad=ああ%  に変更し いい1.TXT をドロップし、インプットを "いい" てみたところ、元のファイルネームが何かにかかわらず word=ああ  に変更されてしまう様です。拡張子も消えます。 ああ1.TXT になってほしいのですが・・・ 変数は使えないんでしょうか

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

下から3行目 set fname=%fname:%woad%=ああ% は、原文ママですか? set fname=%fname:%word%=ああ%

uheri
質問者

補足

早い回答ありがとうございます。 早速ですが ママではありません 本来は%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= つまり この命令で検索文字を毎回任意で変更したいわけです。 何とかなりますでしょうか

関連するQ&A