• ベストアンサー

コピー元が固定パスでない場合のxcopyコマンドの書き方

xcopyコマンドをバッチファイルで実行するのですが、 固定パスの場合は、 xcopy c:\aaa\bbb.txt c:\ccc (c:\aaaフォルダ内のbbb.txtをc:\ccc) と書けばよいと思うのですが、 コピー元が固定のパスではない場合はどうやって書けば良いのでしょうか? やりたいことは、 dddと言うフォルダの中にバッチファイルとeeeフォルダが あり、eeeフォルダの中にコピーしたいもの(fff.txt)が入っています。コピー先は固定でc:\gggの場合 dddと言うフォルダは何処にあっても可能な場合です。 win2000とwin98で書き方が違う場合は両方お願い致します。 よろしくお願いいたします。

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

  • ベストアンサー
  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.2

~\ddd\cp.bat ~\ddd\eee\fff.txt という場合に、c:\ggg にコピーするということですね。 cp.bat に下記のように記述すればOKです。 xcopy eee\fff.txt c:\ggg フォルダを、ドライブ:\フォルダ1\フォルダ2~ の様に指定する方法を 「絶対パス指定」といい、上記の様に、現在のフォルダ位置からに位置を指定 する方法を「相対パス指定」といいます。 尚、~\ddd\eee\ から見てその親である ~\ddd\ は ..\ で表わされます また、ファイルをコピーするだけであれば、xcopy でなくても copy コマンドで 十分です。違いはこちらを参考にして下さい。 http://www1.plala.or.jp/tsune/2msdos.html#MSDOS_cmd_sh

参考URL:
http://www1.plala.or.jp/tsune/2msdos.html#MSDOS_cmd_sh
Ref16570
質問者

お礼

ご解答ありがとうございました。 URL、とても活用できそうです。 参考にさせて頂きます

その他の回答 (1)

  • BILLY-J
  • ベストアンサー率57% (60/105)
回答No.1

こんばんは。 先ず、カレントディレクトリがバッチファイルと同じパスに 移動しているなら、単に相対パスで「ココ」という意味を付け 加えれば良いです。   xcopy .\eee\fff.txt c:\ggg\ (「.¥」が相対表記での現在位置を意味します) この場合、 ・コマンドプロンプト上で ~\ddd\ まで移動してから起動する ・ショートカットの作業フォルダをバッチファイルと同じにする 等が必要ですが、Win9x/NT系の区別無く実行できると思います。 次は置き換え可能パラメータを使う方法、 バッチファイル自身の呼出名を %0 から取得できますが、これを 拡張した物が有ります。例えば   %~F0 :自身のファイル名をフルパス表記にしたもの   %~DP0 :自身のフルパス名のパス部分 等が有りますが、この %~DP0 を使えば簡単です。 Z:\xxx\yyy\sample.bat なら Z:\xxx\yyy\ と取得されます。   xcopy %~DP0eee\fff.txt c:\ggg\ または   CD /D %~DP0   xcopy .\eee\fff.txt c:\ggg\ でOKだと思います。Win2000以降なら使用可能。 Win9xについては手元に無いので何とも言えません。 もし実環境をお持ちでしたらヘルプをご確認下さい。 因みにWin2000の場合は、スタートメニューから起動するヘルプの 目次から「リファレンス」→「Windows 2000 コマンド リファレンス 」 →「% (置き換え可能パラメータ)」に解説が有ります。

Ref16570
質問者

お礼

ご解答ありがとうございました。 大変助かりました。 コマンド リファレンス 参考させて頂きます。

関連するQ&A