- 締切済み
バッチファイル、ドラッグ&ドロップしたファイルだけ
[ファイルを名前を変えて複数個コピーを作成、を一括で] http://okwave.jp/qa/q7808481.html という質問をしていたのですが、 「wordのファイルを、ファイル名を変えて複数コピーするためのフリーソフ 」 http://okwave.jp/qa/q5651889.html という質問を見つけ、参考にしてバッチを編集したのですが、使い勝手が悪いです。 copy *.* 1.* copy *.* 2.* copy *.* 3.* copy *.* 4.* copy *.* 5.* copy *.* 6.* copy *.* 7.* copy *.* 8.* というバッチを作ったのですが、 このことにより、コピーを複数作成したいファイルをバッチファイルのアイコンにドラッグ&ドロップすることにより、カレントディレクトリにコピーが8個作成できるようになったのですが、 ドラッグ&ドロップしたファイル以外に、同一ディレクトリにあるファイルすべてのファイルのコピーが作成されてしまいます。 コピーするのをドラッグ&ドロップしたものだけにする方法があれば教えてください。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- umamimi
- ベストアンサー率39% (144/362)
bat ファイルの中に変数 %1~%9 を書いておくと、 ドラッグした複数のファイルのフルパスがそれぞれ代入されます。 (ドラッグするファイルが足りない場合はその分はヌルになります) (ここでは蛇足でしょうが、フォルダをドロップするとフォルダ名がフルパスで代入されます。 なのでフォルダ以下の全ファイルが対象なら利用できます) なので、例えば for %%a in ( %1 %2 %3 %4 %5 %6 %7 %8 %9 ) do copy %%a *.* としておけば順次コピーされます。 注意点としては ・フルパスが長くなるので、ファイル数が多い場合はfor文がコマンド1行に収まらなくなる可能性がある ・(私の既存知識では)変数は9個までなので、それより多いファイルをドロップすると 対象にならないファイルが生じる(多分) があるので、充分ご注意ください。
- pita-gora
- ベストアンサー率70% (102/145)
enmachoさん、こんな感じでいかがでしょうか。 20から30までの連番をつけてコピーを作るサンプルです。 echo off for /L %%i in (20,1,30) do copy "%~1" "%~dpn1_%%i%~x1" pause
- Gletscher
- ベストアンサー率23% (1525/6504)
コピー元を保管する専用のフォルダを作って、そこにあるものをコピーするようにするのが一番簡単ですね。 つまり、コピー元にする以外の余分なファイルを置かないということです。 そのバッチファイルは欠点があって、コピーし終わったファイルを再びコピーを繰り返してしまうことがあるので危険なプログラムですね。 ですから、名前付きでコピーし終わったファイルは別のフォルダに保存するようにした方が良いでしょう。 copy *.* 完了\1.* とすれば、終わったものは「完了」というフォルダの中に作られます。 また、「*.*」の部分を工夫すれば色々できます。 MS-WORDファイルに限っているなら、 copy *.* 1.* ではなく、 copy *.doc* 1.doc の方が良いでしょう。 また、同じフォルダにコピーしたいものとしたくないものが混在する場合は、たとえば、ファイル名の1文字目に「A」の付くものだけ行う、などの工夫ができます。 copy A*.doc 完了\1.doc
- sknbsknb2
- ベストアンサー率38% (1158/3030)
とりあえず3個分ならこんな感じでしょうか。 copy %1 "%~d1%~p1%~n11%~x1" copy %1 "%~d1%~p1%~n12%~x1" copy %1 "%~d1%~p1%~n13%~x1" ドロップしたファイルと同じ場所にコピーを作ります。 複数のファイルをドロップした場合は最初だけ有効です。 複数ファイルをドロップするにはfor文でコマンドをまわす必要がありますから バッチファイルの文法を勉強してください。
- yamaj_biz
- ベストアンサー率71% (10/14)
ファイルをコマンドにドラッグ&ドロップすると、引数としてファイル名が渡ってきますので、以下のようにするといいと思います。 copy %1 1%~x1 copy %1 2%~x1 copy %1 3%~x1 copy %1 4%~x1 copy %1 5%~x1 copy %1 6%~x1 copy %1 7%~x1 copy %1 8%~x1