- ベストアンサー
batにD&Dした事にするバッチ
あるフォルダの中の特定の拡張子のファイルだけを(仮にwmvとします) 特定のbatにD&Dした事にするにはどの様に記述すれば良いのでしょうか? 合わせてファイル名の特定の文字列を削除するコマンドを 知りたく思っています。 _bbbを削除したい aaa_bbb.wmv ppp_bbb.wmv お願いします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
D&Dのほううまくいって良かったです。 補足の質問ですがパッチではなくてバッチですよね。 リネームの件ではD&Dは関係ないんですよね。 #2 tel0463さんが回答された元のバッチをたとえば、bbb.batだとして 以下のように2行追加します。 :--------------------------------------------- bbb.bat echo off pushd %1 for %%A in ( *_bbb.txt ) do call :sub "%%A" popd exit /b :sub set fname=%1 set fname=%fname:_bbb=% ren %1 %fname% goto :EOF 呼び出す方の別のバッチからは以下のように呼び出します。ここでは "C:\Documents and Settings\Username\My Documents\sample"の部分が指定したいフォルダ名です。 call bbb.bat "C:\Documents and Settings\Username\My Documents\sample" これで試してみてください。
その他の回答 (7)
- tel0463
- ベストアンサー率45% (64/142)
pita-goraさん、すごいです。 個人的に、非常に参考に成りました。 ありがとうございます。 virtuaさん、最後までお力に成れずに、ごめんなさい。
- pita-gora
- ベストアンサー率70% (102/145)
D&Dで呼び出したいバッチが示されていないので検証できませんが、 echo %* pause というバッチで実験してみると、D&Dしたファイルはフルパスで引数に渡されるようです。 D&Dしたいのが C:\video ディレクトリの wmv ファイル、呼び出したいバッチのフルパスを仮に C:\sample\sample.bat として、次のようなバッチでどうでしょうか。 echo off set callbat="C:\sample\sample.bat" for %%F in ( C:\video\*.wmv ) do call :sub "%%~fF" %callbat% exit /b :sub set callbat=%callbat% %1 goto :EOF ただ、ファイル名のフルパスが引数にずらずらと並ぶので、コマンドラインの文字数の制限(XPだと8191文字 → http://support.microsoft.com/kb/830473/ja )を越えてしまうほど wmv ファイルが多い場合はうまくいかないかもしれません。 その場合は、バッチに1ファイルずつD&Dして呼び出すような以下のような書き方で試してみて下さい。 for %%F in ( C:\video\*.wmv ) do "C:\sample\sample.bat" "%%~fF" いずれにせよ、呼び出したいバッチの内容が不明なので検証不足かもしれません。
補足
ありがとう御座います。 D&Dと同様の処理が出来ました。 非常に感謝しております。 しかし回答2で教えていただいた下記のリネームコマンドを 別のパッチから呼び出しても動作しません。 本当は指定したフォルダ内の_bbb.txtに適用させたいのです。 もちろん下記のコマンドをbatにて保存し、同一フォルダ内で 実行すれば_bbbは削除されるのですが・・・ echo off for %%A in ( *_bbb.txt ) do call :sub "%%A" exit /b :sub set fname=%1 set fname=%fname:_bbb=% ren %1 %fname% goto :EOF
- tel0463
- ベストアンサー率45% (64/142)
とあるD&Dすると動作するバッチ の記述の中に、 子subとして記述した内容を記入して、 callで読み込んでは駄目?ですか? pita-goraさんの解説に非常に興味あります。 出来れば、バッチの中を見てみたい。
- pita-gora
- ベストアンサー率70% (102/145)
こんにちは。 >とあるD&Dすると動作するバッチがあるのですが、 >実行した同一フォルダ内の指定した拡張子のファイルだけを >そのバッチにD&Dしたのと同じ様に処理するバッチを組みたいのです。 バッチへのDrag&Dropは1ファイルずつですか?それと複数ファイルをまとめてですか?どちらがお望みでしょうか。
お礼
もう少し補足します。 例えばwmvが対象だとしたら 欲しい.batを実行すると同一ディレクトリ(出来れば指定したディレクトリ)の 中の全ての.wmvを指定したbatにD&Dした事にする、です。 欲しい.batに記述する内容が知りたく思います。
補足
有難う御座います。 指定した拡張子のファイルをD&Dしたいのです。
- tel0463
- ベストアンサー率45% (64/142)
補足です。 既に同じ名前があるときは、上書きはしません。 D&Dでは動きませんでした・・・。 変更したいファイルをひとつのディレクトリにまとめ、 作成したバッチファイルを同ディレクトリ内に 同じディレクトリに配置してバッチをダブルクリックすれば、 ディレクトリ内が一気に変わっていきます。 もちろん、dos窓でも起動します。
補足
ありがとうございます。 少し質問の仕方が悪かったかも知れません。 とあるD&Dすると動作するバッチがあるのですが、 実行した同一フォルダ内の指定した拡張子のファイルだけを そのバッチにD&Dしたのと同じ様に処理するバッチを組みたいのです。 後半部分の特定文字削除については 解決いたしました、ありがとう御座います。 D&Dしたのと同様にファイルを渡す処理をして欲しいのです
- tel0463
- ベストアンサー率45% (64/142)
echo off for %%A in ( *_bbb.txt ) do call :sub "%%A" exit /b :sub set fname=%1 set fname=%fname:_bbb=% ren %1 %fname% goto :EOF .txt実験したけど、拡張子をwmvに代えてもらえば 多分いけるかと。 でも、必ずバックアップとってやってくださいね。 1_bbb.txt 2_bbb.txt を20個くらい作って実験しましたが、 1.txt~20.txtに直りましたので、これで合格点でしょ?
以下のようなツールを使ってリネームしてください。 [参考]窓の杜 - 【Review NEWS】リネームソフト「Flexible Renamer」の最新版v7.1が公開 http://www.forest.impress.co.jp/article/2003/02/24/flexiblerenamer71.html
補足
リネーマーはしっていますが、自動では無いし、 今回の質問の意図と少し違います・・・
補足
色々悩みましたが解決しませんでした。 以下の部分を呼び出したバッチに追記しました。 そしてダブルクリックしてテストすると出来るのですが ソフトからの呼び出しでは出来ません。 録画関係のソフトなのですが録画終了後に 以下のbatを実行する、という欄がありソフトから 呼び出しているのが原因なのでしょうか? aaa.batはそのソフトと同一フォルダ内においています。 その他の呼び出すbatは該当作業フォルダにおいています。 >呼び出す方の別のバッチからは以下のように呼び出します。ここでは >"C:\Documents and Settings\Username\My Documents\sample"の部分が指定したいフォルダ名です。 >call bbb.bat "C:\Documents and Settings\Username\My Documents\sample"