• 締切済み

コマンドラインからのコピー

お世話になっております。 【やりたいこと】 特定のファイルを任意のディレクトリにコピーするbatファイルを作成し、各PCに配布する。 【質問】 コピー先のディレクトリパスが各PCで固定であればできるのですが、 例えば、コピー先のディレクトリパスが各PCによって "C:\LOCAL\TEST\TEST2" や "C:\LOCAL\TEMP\TEST2" という風に途中のディレクトリ名が異なる場合にどのように記述すればいいのか分かりません。ちなみに最後のディレクトリ名はどのPCでも統一されています(この場合だと"TEST2"というディレクトリ名は固定) お手数ですが、ご教授頂けますと幸いです。

みんなの回答

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

コピー元のファイル(sample1.dat, sample2.dat)とバッチファイル(kopi.bat)を同じディレクトリに置いておくとして、 ---"kopi.bat"の内容--- copy sample1.dat %1\TEST2 copy sample2.dat %1\TEST2 --- としておき、 C:\>kopi.bat C:\LOCAL C:\>kopi.bat C:\LOCAL\TEMP など、バッチファイルの引数(バッチファイル中では%1)としてコピー先ディレクトリを指定すると良いのではないでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

各PCで固有のディレクトリを何処かに記憶していないと無理じゃないでしょうか? 例えば、AUTOEXEC.BAT に SET LOCAL_DIR=C:\LOCAL\TEMP\ と書いてあるとか。 そういう設定が各PCで行われているなら bat ファイルで COPY /B コピー元ファイル %LOCAL_DIR%TEST2 と書く事が出来ますが。 COPY /B コピー元ファイル %LOCAL_DIR%TEST2 の部分は SET LOCAL_DIR=C:\LOCAL\TEMP\ と設定されていれば COPY /B コピー元ファイル C:\LOCAL\TEMP\TEST2 に置き換わりますし、 SET LOCAL_DIR=C:\LOCAL\TEST\ と設定されていれば COPY /B コピー元ファイル C:\LOCAL\TEST\TEST2 に置き換わります。 なお、設定が行われていないPCで実行すると COPY /B コピー元ファイル TEST2 になってしまい、変な動作をしてしまうので注意が必要です(複数のファイルをカレントディレクトリのTEST2と言う1つのファイルに結合コピーしてしまったり)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ファイル名のリネームとコピーを問合せ形式で行いたい

    よろしくお願いします。 ファイル名のリネームとコピーをDOSコマンドで問合せ形式で行うBATを作りたいのですが、作り方を教えて頂きたく質問をさせて頂きます。 実行環境は「Windows Server 2008 R2」です。 やりたいことは、 (1)BATをDOSプロンプトで起動 (2)「リネームするファイルのディレクトリを選択してください」と聞いてきて、番号が付いたディレクトリの一覧(固定で3個)が画面に表示されて、番号で指定。 (3)「リネーム前のファイル名を選択してください」と聞いてきて、番号が付いたファイルの一覧(固定で10個)が画面に表示されて、番号で指定。 (4)「リネーム後のファイル名を入力してください」と聞いてきて、ファイル名を入力。 (5)「xxxをyyyにリネームします。よろしいですか?」と聞いてきて、「はい」ならリネームを実行、「いいえ」なら(2)に戻る。エラーならBAT終了。 (6)「リネームを繰り返しますか?」と聞いてきて、「はい」なら(2)~(5)を繰り返し、「いいえ」なら(7)へ。 (7)「コピー元のディレクトリを選択してください」と聞いてきて、番号が付いたディレクトリの一覧(固定で4個)が画面に表示されて、番号で指定。 (8)「コピー元のファイル名を選択してください」と聞いてきて、番号が付いたファイルの一覧(固定で10個)が画面に表示されて、番号で指定。 (9)「コピー先のディレクトリを入力してください」と聞いてきて、番号が付いたディレクトリの一覧(固定で4個)が画面に表示されて、番号で指定。 (10)「xxxをyyyにコピーしますよろしいですか?」と聞いてきて、「はい」ならコピーを実行、「いいえ」なら(7)に戻る。エラーならBAT終了。 (11)「コピーを繰り返しますか?」と聞いてきて、「はい」なら(7)~(10)を繰り返し、「いいえ」ならBAT終了。 初心者レベルではこのようなBATが作成できずに困っております。 どうぞ、よろしくお願いします。

  • ATコマンドでネットワークドライブにファイルをコピーしたいのですが・・・

    お世話になります。 コマンドプロンプトを使用し、ファイルを別のコンピュータにコピーしたいと考えております。 環境: Test1サーバ・・・コピー元:Windows NT4.0 Test2サーバ・・・コピー先:Windows 2000 Server それぞれ別ドメインに属しています。 以下のようなbatファイルを作成しました。 net use X: \\Test2\copyfolder userpassword /user:administrator COPY sourcefile.doc X: net use X: /delete バッチファイルをTest1サーバで実行したところ正常にネットワークドライブ割り当て、ファイルのコピー、ネットワークドライブの切断ができました。 これをatコマンドで以下のようにスケジュール設定したところ、失敗しました。 at 10:00 "c:\temp\netcopy.bat" この問題の回避策を教えてください。 よろしくお願いします。

  • 最新更新日のBATファイルコピーについて。

    最新更新日のBATファイルコピーについて。 どなたか教えてください。 BATを夜間スケジュール化して、あるファイルをコピーするBATを作成したいのです。 条件は (1)コピー元フォルダ C:TEST フォルダ以下に(2)~(4)のファイルがあります。 (2)コピー元ファイル名 AAABBB20101001.txt (3)コピー元ファイル名 AAABBB20101002.txt (4)コピー元ファイル名 AAABBB20101003.txt   **ファイル名の日付部分のみが可変です。 (5)コピー先 D:TESTBKK (6)コピー後ファイル名 AAABKK.txt (4)のみをコピーし(6)のファイルとして上書きコピーするbatを作成したいのです。 自分でも下記のbatを作成したみました。 @ECHO OFF SET LOGPATH=C:\test FORFILES /P %LOGPATH% /M AAA*.txt /C "cmd /c COPY /y C:\test D:\test\AAABKK.txt" /D 0 最新日付のみをコピーしたつもりが、すべてのファイルがAAABKK.txtに追加された 状態で出力されていました。どなたかアドバイスをお願いします。 他に違う作成方法があれば教えてください。

  • (VBA)bat処理の結果がおかしい

    以下の1)から5)までをVBAで行いたいのですが 1)、2)までのコードはネットを参考に作成したのですが  2)の結果が¥tempに書き出されませんでした。   (C:¥に直接書き出される) 原因は何でしょうか ?  (コードの修正をお願いします。) 以下は、行いたい事のイメージ。-------------------------------------------------- 1)指定ディレクトリにディレクトリ(C:\)に保存した   BATファイル(aa.bat)をコピーする 2)指定ディレクトリ内でaa.batを起動する 3)指定ディレクトリーに最初から存在したフォルダーを削除する 4)aa.batによって作成されたフォルダーを最初のフォルダー名に変名する 5)aa.batをコピー先から削除する 例:指定ディレクトリをC:¥temp、aa.batをC:\tempにコピーしたと  C:¥temp¥AA  C:¥temp\AA¥subAA   C:\temp\aa.bat aa.batを\temp内で起動した後で ------>を実施  C:¥AA    ------> 削除  C:¥AA_SUBAA ------> C:\AAに変名  C:\temp\aa.bat -----> 削除 最終的に  C:¥temp\AA --------------------------------------- Sub Test() Dim strPath As String Dim intPathLen As Integer Dim intR As Integer Dim F As Variant Dim obj As WshShell Dim sPath 'Range("A5:F100").Clear ' フォルダーを自由に選べること。 参考:officeTANAKA With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then ' MsgBox .SelectedItems(1) If Len(.SelectedItems(1)) = 3 Then ' c:\の場合とサブフォルダーの場合 mypath = .SelectedItems(1) Else mypath = .SelectedItems(1) & "\" End If End If End With If mypath = Empty Then MsgBox "フォルダー名の指定をキャンセルしました。": Exit Sub MyName = Dir(mypath, vbDirectory) ' 最初のフォルダ名を返します。 ’Range("A2") = mypath 'コピー先フォルダーの指定 'BATファイルのコピー FileCopy "C:\aa.bat", mypath & "aa.bat" 'batファイルの起動 sPath = mypath & "\aa.bat" Set obj = New WshShell Call obj.Run(sPath, WaitOnReturn:=True) End Sub ------------------------------------------------------------------- 以下は、aa.batの内容です。 for /d %%i in (*) do ( pushd . cd %%i for /d %%j in (*) do ren "%%j" "%%i_%%j" for /d %%k in (*) do ren "%%k" "../%%k" popd rd "%%i" ) -------------------------------------------

  • 他PCへのファイルコピー

    お世話になります。 Webからファイルアップロードしたいのですが、 ファイルサーバーがWebサーバーとは別になっています。 IISで仮想ディレクトリには設定したのですが、 うまくアップできません。 で、ローカルディレクトリにファイルをアップしてから ファイルコピーしようとしたのですが、 やはりできません。 Set objFSO = Server.CreateObject("Scripting.FileSystemObject") objFSO.CopyFile "C:\test\aaa.txt", "\\server1\c:\temp\aaa.txt",True マシンserver1のtempフォルダをネットワークドライブZにしてみて objFSO.CopyFile "C:\test\aaa.txt", "z:\temp\aaa.txt",True としてみてもダメでした。 どうすればアップできるでしょうか? なにか権限の問題でもあるのでしょうか?

  • batファイルで、あるディレクトリ配下に存在する場合は、実行を中断

    batファイルのコードで、 このbatファイルがある特定のディレクトリ内にある場合は、即座に実行を中断するようにしたいのですが、どうすればよいでしょうか。 詳しく述べます。 あるbatファイルがあります。 このbatファイルは、普段、マウスでダブルクリックして実行しています。 仮に、このbatファイルが C:\Temp\a というディレクトリにある場合に実行を中断するには、 ======================== set ThisScriptPath=%~dp0 if "%ThisScriptPath%" == "C:\Temp\a\" goto END ・・・ :END set ThisScriptPath= ======================== というようなコードを入れておけばいいと思います。 しかし、C:\Temp の中の「どのサブディレクトリにbatファイルがある場合でも(aサブディレクトリでもbサブディレクトリでも、何階層下でも)」実行を中断するにはどうすればいいのでしょうか。

  • windows2000のコマンドプロントでのコピーの仕方

    windows2000のコマンドプロントでネットワークのフォルダーを コピーをやろうとしています。 ネットワークのフォルダーごとコピーをしたいのですが c:\>cd \\an4\f とディレクトリの場所を移そうと入力すると 現在のディレクトリパスとして無効ですエラーがでます。 どこが悪いのでしょうか教えてください。

  • コマンドライン引数の展開について

    バッチファイル内で%~dp0とすれば ファイルが保存されているディレクトリを取得できます。 これを利用して環境変数に set TEST=pushd %~dp0 とセットし、 %TEST% と展開することによって バッチファイルのディレクトリに移動しようとしたのですが、うまく行きませんでした。 ファイルが保存されている場所への移動手段をわかりやすくまとめたいです。 それ以外にも各バッチファイルの先頭で行う処理を共通化する目的があります。 以下のように第一引数として渡すやり方もあるのですが、 test.bat---- call common.bat %~dp0 common.bat---- pushd %~dp1 setlocal 共通化部分ではsetlocalを使うため、 別ファイルに分割してしまうと有効範囲が変更され都合が悪いのです。 何かうまい回避方法はありますでしょうか? (そもそも環境変数内で%~dp0が展開されてくれれば済む話なのですが…)

  • コピーコマンドについて

    バッチ処理での、ファイルコピーについて質問させていただきます。 人によってダウンロードしたファイルを保存が違うかと思います。(デスクップだったたり、cドライブの任意のフォルダだったり。) 【想定例】 ユーザは、Xファイルをダウンロードして、任意の場所に保存します。 (Xファイルの中身は、音楽.wmvとそれをコピーさせる.batファイル) どこの場所に保存しても、バッチファイルを実行すれば、指定のフォルダに保存できるような、内容を教えていただけますでしょうか。 コピー先はC:\Program Files\ダウンロード\musicの中です。 よろしくお願いします。

  • バッチのcopy

    フロッピーのサブディレクトリへのファイルコピーで、コピー先のファイル名を指定しないと、コピー先ディレクトリが間違っているといわれます。 a:\tempは既存フォルダです。 @echo off copy C:\WINDOWS\デスクトップ\1.txt a:\ copy C:\WINDOWS\デスクトップ\2.txt a:\temp\ これでは2.txtがコピーできないので copy C:\WINDOWS\デスクトップ\2.txt a:\temp\2.txt のようにしなくてはなりません。 コピー先のファイル名を指定せずにコピーする方法がありましたら教えてください。