• 締切済み

バッチファイル、ドラッグ&ドロップしたファイルだけ

[ファイルを名前を変えて複数個コピーを作成、を一括で] 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個作成できるようになったのですが、 ドラッグ&ドロップしたファイル以外に、同一ディレクトリにあるファイルすべてのファイルのコピーが作成されてしまいます。 コピーするのをドラッグ&ドロップしたものだけにする方法があれば教えてください。

みんなの回答

  • umamimi
  • ベストアンサー率39% (144/362)
回答No.5

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)
回答No.4

enmachoさん、こんな感じでいかがでしょうか。 20から30までの連番をつけてコピーを作るサンプルです。 echo off for /L %%i in (20,1,30) do copy "%~1" "%~dpn1_%%i%~x1" pause

  • Gletscher
  • ベストアンサー率23% (1525/6504)
回答No.3

コピー元を保管する専用のフォルダを作って、そこにあるものをコピーするようにするのが一番簡単ですね。 つまり、コピー元にする以外の余分なファイルを置かないということです。 そのバッチファイルは欠点があって、コピーし終わったファイルを再びコピーを繰り返してしまうことがあるので危険なプログラムですね。 ですから、名前付きでコピーし終わったファイルは別のフォルダに保存するようにした方が良いでしょう。 copy *.* 完了\1.* とすれば、終わったものは「完了」というフォルダの中に作られます。 また、「*.*」の部分を工夫すれば色々できます。 MS-WORDファイルに限っているなら、 copy *.* 1.* ではなく、 copy *.doc* 1.doc の方が良いでしょう。 また、同じフォルダにコピーしたいものとしたくないものが混在する場合は、たとえば、ファイル名の1文字目に「A」の付くものだけ行う、などの工夫ができます。 copy A*.doc 完了\1.doc

  • sknbsknb2
  • ベストアンサー率38% (1125/2898)
回答No.2

とりあえず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)
回答No.1

ファイルをコマンドにドラッグ&ドロップすると、引数としてファイル名が渡ってきますので、以下のようにするといいと思います。 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

関連するQ&A

  • ファイルコピーのバッチ作成

    ファイルコピーのバッチ作成 いつもお世話になっております。 1つのファイルを複数のディレクトリー(ネットワーク上から見える端末)にコピーするバッチを 作成したいのですが、上手くいきません。 COPY /Y C:\(デスクトップのパス)\コピーファイル.mdb \コピー先の絶対パス 上のように1つのファイルを1つのクライアントにファイルをコピーするバッチファイルを作成したのですが、コピーされません。 DOSで実行すると"ファイルが見つかりません"と出てしまいます。 カレントディレクトリーの設定だとしたら、 どのような方法がありますでしょうか? 宜しくお願い遺体sます。

  • XPバッチプログラムについて

    すいませんおしえてください windowsXPでバッチファイルを作成しています。 動作内容は↓の通りです。 (1)バッチファイルが置いてあるカレントディレクトリ配下にある複数のディレクトリから、ファイル名に「test」を含む.txtファイルを カレントディレクトリにコピーする。(これをカレントディレクトリ配下のディレクトリがなくなるまで繰り返す) ※簡単に言うと、1つ下のディレクトリからコピーしてくるということです。 (2)既にカレントディレクトリに同じ名前のファイルが存在する場合は自動的に連番して上書きしないようにコピーする。 今、(1)については下記の通り作成して動作確認しましたが、このままでは複数のディレクトリに同じファイル名が 存在する場合に上書きされてしまいます。 (2)についてなかなか上手くコーディングできないのですが↓のプログラムに追加すればよいものを教えていただけますでしょうか? もしくは、全体的に間違っていれば、その部分もご指摘お願い致します。 @echo off for /d %%d in (*) do ( if exist %%d\*test*.txt copy %%d\*test*.txt *test*.txt ) 以上、よろしくお願い致します。

  • バッチで指定ファイルの文末に改行コードをつけたい

    指定フォルダ内にある全てのテキストファイルの文末に改行コードをつけたいと思っています。 しかし指定フォルダの中にあるサブフォルダやファイル名は不変ではありません。 量も大変な数があるためバッチファイルを作ろうとしています。(*.bat) あるフォルダを指定すればそのフォルダに含まれるサブフォルダも対象とし 全てのテキストファイルの文末に改行コードをつけたいのですが バッチファイルにはどのように記述すればよいのでしょうか? 理想ではそのバッチファイルが実行されているフォルダをカレントディレクトリとして取得し そのカレントディレクトリ内のテキストフォルダ(ここでのフォルダ名は固定の予定)を指定フォルダとしたいです。 以前ほんの少しだけプログラムを触った事がある程度でコマンドプロンプトは殆ど触った事がありません。 下記のようなページを参考にしていますがうまくいきませんでした。 どなたか御教授して頂けないでしょうか。 http://okwave.jp/qa/q6496815.html http://okwave.jp/qa/q4632586.html http://oshiete.sponichi.co.jp/qa5051199.html

  • シンボリックリンク作成のバッチファイル

    親フォルダーに、aフォルダーとbフォルダーが入っています。 aフォルダー配下には、xフォルダーがあり、その中には複数のテキストファイルが入っています。 parent\a\x\test.txt parent\b\ 以下の様なバッチファイルを「送る」に登録しました。 @echo off rem 選択ディレクトリ配下のxディレクトリに移動 cd /D %1\x\ rem カレントディレクトリにあるすべてのファイルを、bディレクトリにコピー for %%i in (*.*) do ( copy "%%i" "..\..\b\" ) これにより、aフォルダーを選択してバッチファイルを実行すると、xフォルダー配下のテキストファイルがbフォルダーの中にコピーされることは確認しました。 ここで、コピーではなく、シンボリックリンク(mklink)を作成したいのですが、引数をどのように設定すればよいでしょうか。いろいろ試しましたがうまくいきませんでした。 ご教示よろしくお願いします。

  • XPのバッチファイルについて

    XPでcopyコマンドのバッチファイルを作ろうとしています。 ネットで共有ファイルからのファイルのコピーが、漢字混じりのディレクトリが長すぎて、うまく動作してくれません。 コマンドレベルでのコピーの方法はないでしょうか。

  • バッチファイルを作りたい。

    こんにちは いまある作業をしていて、どうにか自動化できないかと調べていたら、 バッチファイルというものがあると知りました。 バッチファイルに、ファイルをドロップすると、そのファイルの名前のフォルダが作成され、 そのフォルダの中に、B,Cの2つのフォルダ、さらにフォルダBのなかに B1、B2、B3、B4の4つのフォルダが作成される。 というバッチファイルを作りたいです。 また、一度に複数のファイルをドロップしても、動くようにしたいです。 どなたか詳しい方、教えてください。 よろしくお願いします。

  • ドラッグ&ドロップ

    ドラッグ&ドロップで、ファイルをコピーしたいと思ったのですが、移動になる時とコピーになる時があります。 フォルダの関係がどのような時に違ってくるのですか。 また、OSの違うPC間でも同じでしょうか。 よろしくお願いします。

  • バッチファイルのログ出力方法

    バッチファイルのログ出力方法 サーバーに置いてあるmdbファイルを各クライアント端末のデスクトップ(複数台)にコピーする バッチファイルを作成しています。 COPY /Y "C:\(コピー元の絶対パス)\コピーファイル.mdb" \コピー先の絶対パス でファイルのコピーができることが確認で見ました。 例えば、正常にコピーができたのか、何らかの理由(PCが落ちていたetc)でコピーができなかったのかを ログで出力したいのですが、どのようにコーディングすればよいでしょうか? ログの出力場所は「.batファイルと同じディレクトリー」にしたいです。 一生懸命調べたのですが… 素人なので分かりませんでした。 皆様宜しくお願いいたします。

  • WinXPでドラッグ&ドロップした際に

    初めまして よろしくお願いします。 さっそくですが,WinXPで外部メディア(USBメモリなど)に複数個のファイルをドラッグ&ドロップした際に一番最後のファイルからコピーされてしまいます。 例えば001.jpg~010.jpgをコピーすると010.jpg,001.jpg~009.jpgという順番になってしまいます。(作成日時が) これはシステム上のバグでしょうか?それとも何か設定が有りますか? ご存知の方,ご回答よろしくお願いします。

  • VB6でのドラッグ&ドロップについてです

    VB6でのことなんですが、リネームツールを作ろうと思って色々やってるのですが、うまくいきません。 フォルダをドラッグ&ドロップをして、 text1にフォルダの中のファイル名を表示して、text2にファイル名をコピーしてリネーム、というようなものを作りたいと考えています。 フォルダをドラッグ&ドロップして表示されるのが、そのフォルダのフルパスになってしまいます。 ドラッグ&ドロップしたフォルダの中のファイル名だけを表示する方法はどうすればいいのでしょうか? よろしくお願いします。

専門家に質問してみよう