VZEditor/VZ-IBM/ZCOPY.DOC
Yoshihiko Hyodo 6f06b9514a first commit
2024-11-18 22:21:26 +09:00

528 lines
17 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

==============================================================================
ZCOPY Version 1.20 Copyright (C) 1992 by c.mos
==============================================================================
■■■ ZCOPYとは ■■■
 ZCOPYは、コマンドのXCOPYをパワーアップした、汎用のコマンドです。
名前は「ZCOPY」ですが、コピー以外にも各種の機能をもっています。
◎ライト時に、複数ファイルをオープンして一度に書き込む、『マルチ・ライト
 オープン』方式を採用、少ないシーク動作で高速コピー
◎複数のディレクトリ/ファイルマスクの指定(排他指定あり)
◎ディレクトリ一括コピー(/s時のディレクトリ位置の保存、およびディレクトリ
 ・タイムスタンプのコピー機能(/t
◎サイズの増加した部分のみコピーする、『インクリメンタル・コピー』機能(/i
◎ディレクトリ一括も可能なmove機能(/m
◎ディレクトリ一括も可能なdelete機能(/del
◎ファイルの高速コンペア機能(/c
《Ver1.20の追加機能》
◎レスポンス・ファイル(@fileの対応
■■■ 書式 ■■■
 ZCOPYは、次の書式でコマンドライン・パラメータを記述して使用します。
Usage: zcopy <src> {<mask>|[<mask>]} [<dst>] {/<opt>}
zcopy [<src>] @filelist [<dst>] {/<opt>}
<src> ソースパスsource path
@filelist レスポンス・ファイル
<mask> ディレクトリまたはファイルマスク
[<mask>] <mask>の排他指定
<dst> ターゲットパスdestination path
/<opt> オプション
  ※ オプションは、パラメータ中の任意の位置で指定できます。
■■■ レスポンス・ファイル ■■■
 VZ Editor Ver1.6 のファイラーとの連携のため、レスポンス・ファイルに対応しま
した。(以降「@FILE」と記述します
・@FILE は、各行に処理すべきファイル名が記述された、テキストファイルです。
・@FILE を指定した場合は、原則的に <src> ディレクトリを指定しなくてはなり
 ません。<src> が省略された場合は、以下のように解釈されます。
 1. @FILE のファイル名がフルパスで記述されている場合
@FILEの先頭のファイルのディレクトリを<src>ディレクトリとします。
 2. @FILE のファイル名がファイル名のみの場合
カレントディレクトリを<src>ディレクトリとします。
・@FILE のファイル指定にワイルドカード文字は使えません。
・@FILE の中にサブディレクトリを記述することもできます。「/s」オプションを
 指定した場合は、サブディレクトリ以下の全てのファイルも対象となります。
~~~~~~~~~~~~~~
・このように、@FILE では個々のファイルを指定し、コマンドラインで記述した場合は
 ファイルマスクとして判断されます。
 
■■■ オプション ■■■
 ZCOPYには、次の種類のオプションがあります。オプションは「/」+英字1文字
/delのみ文字で指定します。大文字小文字は問いません。
 「zcopy<リターン>」または「zcopy /?<リターン>」で、オプションの一覧を表示します。
/a: Archive(xcopy /a) /n: No overwrite
/b: Backup (xcopy /m) /o: Overwrite only
/c: Compare (do not copy) /s: Subdirectories
/del: Delete /t: Time stamp copy (with /s)
%ロ /e: Echo /u: Update new files
/g: Gather /v: Verify
/i: Incremental copy /x: hidden files too
/m: Move
/a: Archive(xcopy /a)
XCOPYのオプション「/A」と同様に、アーカイブ属性の付いたファイルだけ
をコピー(※)します。あまり使い道はありません。
  ※ コピー以外の操作(移動・比較・削除)時にも指定できます。
/b: Backup (xcopy /m)
XCOPYのオプション「/M」と同様に、アーカイブ属性の付いたファイルだけ
をコピーし、コピー後にソースファイルのアーカイブ属性をクリアします。
このオプションを使えば、タイムスタンプの比較なしに、一度だけバック
アップを取ることができます。
/c: Compare (do not copy)
ソースとターゲットのファイルを比較します。両方のディレクトリに存在
するファイルのみを比較の対象とし、結果をファイル名の後に表示します。
 ・表示なし : 一致
 ・mismatch! : 相違箇所あり
 ・longer : ソースの方が長い
 ・shorter : ソースの方が短い
ファイルの中身を実際に比較するのは、サイズが等しい場合のみです。
/del: Delete
ソースで指定したファイル/ディレクトリを削除します。確認のキー入力は
ありませんので、誤操作を防ぐために3文字のオプション名になっています。
    リードオンリ属性の付いたファイル/ディレクトリも削除します。
不可視属性、システム属性の付いたファイルも削除する場合は、オプション
「/del /x」を指定します。
%イ ※ Ver1.02で、削除時のターゲットパスの指定が可能になりました。
    この場合は、オプション「/n,/o,/u」のいずれかを指定し、ソースとターゲッ
トパスを比較して、選択されたソースパスのファイルを削除します。
/e: Echo %ロ Ver1.05で追加)
コピー/移動/比較の場合は、画面にファイル名を表示するだけで、何も実行
しません。
削除の場合は、削除するファイル名を表示した後、削除を実行します。
/g: Gather
「/s」と同様に下位のサブディレクトリまでコピーの対象としますが、
ファイルを1つのターゲット・ディレクトリに集めます。
ソースの別ディレクトリに存在する同名ファイルは、そのサイズ・時間が
一致した場合は上書きし、異なる場合は、拡張子を「.001, .002, ...」
というように順次リネームした上でコピーします。
  ※ このオプション指定時、『マルチ・ライトオープン』機能は働きません。
/i: Incremental copy
「/u」と同様に、日付が新しいファイルのみコピーしますが、ソースファイル
がターゲットファイルより大きい場合は、ファイルの末尾を比較し、一致した
場合にはサイズの増えた部分(+α)しかコピーしません。
このオプションは、サイズが大きく、かつ追加されていくだけの、通信の
ログファイルのバックアップに最適です。
/m: Move
ファイルを移動します。同一ドライブ内で別ディレクトリへ移動する場合は、
ディレクトリエントリの書き換えだけでコピーはしません。
別ドライブへ移動する場合は、コピー終了後、ソースファイル/ディレクトリ
を削除します。
/n: No overwrite
ターゲット・ディレクトリに既に存在するファイルは、コピーしません。
/o: Overwrite only
ターゲット・ディレクトリにも存在するファイルのみ、コピーします。
/s: Subdirectories
XCOPYのオプション「/S」と同様に、下位のサブディレクトリまでディレクト
リ構造ごとコピーします。
/t: Time stamp copy (with /s)
「/S」でディレクトリ一括コピーする際に、ターゲット側に作るディレクトリ
のタイムスタンプを、ソースからコピーします。
/u: Update new files
ターゲット・ディレクトリに同名ファイルが存在する場合は、ソースファイル
の方が日付が新しい場合のみコピーします。
/v: Verify
ライト直後にファイルをリードし、メモリの内容と比較します。相違が生じた
場合は、エラーメッセージを表示してコピーを停止します。
/x: hidden files too
不可視属性、システム属性の付いたファイルも、コピーします。
■■■ 使用方法 ■■■
■ 単純コピー(全ファイル指定)
C:\>zcopy a: ( A:*.* → C:\ )
~~~~~~~~
・ファイルマスクを省略すると、「*.*」と解釈されます。
C:\>zcopy . b: ( C:\*.* → B: )
~~~~~~~~~~
・「.」は、カレントディレクトリを意味します。
C:\>zcopy \win b:\win /s ( C:\WIN\.. → B:\WIN\ )
~~~~~~~~~~~~~~~~~~~~
・c:\win を b:\win へ一括コピーします。
 ZCOPYでは、ターゲットにファイル名を指定する事はできませんので、
 「b:\win」は、末尾の「\」がなくともディレクトリと解釈します。
C:\>zcopy \ win b:\ /s ( C:\ WIN\.. → B:\ )
~~~~~~~~~~~~~~~~~~
・\ と win をスペースで区切ると win をディレクトリ指定と解釈し、
 ソースパス「\」の元の、ディレクトリ「win」を対象とします。
 この場合、ターゲットに「\win」を指定する必要はありません。
C:\>zcopy \ win win.j\ b:\ /s ( C:\ WIN\.. , WIN.J\.. → B:\ )
~~~~~~~~~~~~~~~~~~~~~~~~~
・同様に、複数のディレクトリを指定できます。ディレクトリの後の「\」
 は省略可能ですが、拡張子付きディレクトリを指定する場合は、ファイル
 マスクと解釈させないために、「\」を付ける必要があります。
C:\>zcopy \ [dos bin] b:\ /s
~~~~~~~~~~~~~~~~~~~~~~~~~
・[dos bin] は、排他ディレクトリ指定です。これらのディレクトリは、
 コピーしません。
 排他ディレクトリにワイルドカードを使用する事はできません。
 (ファイルマスクと解釈されてしまいます。)
■ 単純コピー(ファイルマスク指定)
C:\>zcopy \ config.* autoexec.* \root
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
・config.*とautoexec.*を \root にコピーします。
C:\>zcopy \vz .def \def
~~~~~~~~~~~~~~~~~~~
・「*.拡張子」の場合、「*」は省略できます。
C:\>zcopy \win\.ini .txt \txt
~~~~~~~~~~~~~~~~~~~~~~~~~
・最初のファイルマスク(.iniは、ソースパス\winに続けて記述でき
 ます。
C:\>zcopy \src\editfile. b:
~~~~~~~~~~~~~~~~~~~~~~~
・拡張子のないファイルを指定する場合は、末尾に「.」を付ける必要が
 あります。
C:\>zcopy \ sys dos .sys b:
~~~~~~~~~~~~~~~~~~~~~~~
・c:\sys, c:\dos の中の *.sys をコピーします。ディレクトリ指定、
 ファイルマスクの順序は任意ですが、これらはターゲットパスの前に
 指定する必要があります。
■ バックアップ
C:\>zcopy a:\ b:\ /s /u
~~~~~~~~~~~~~~~~~~~
・ドライブAの全ファイル(下位ディレクトリを含む)のうち、ドライブB
 に存在しないファイル、および日付の新しいファイルをコピーします。
C:\>zcopy \work [.bak .$$$] b:\bak /u
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
・拡張子が「.bak .$$$」のファイルを除いてバックアップします。
C:\>zcopy \ log b:\ /s /i
~~~~~~~~~~~~~~~~~~~~~
・c:\log\ 以下にある通信ログファイルを、インクリメンタルコピーで
 バックアップします。
%イ C:\>zcopy a:\ b:\bak /s /u
C:\>zcopy b:\bak a:\ /s /n /del
~~~~~~~~~~~~~~~~~~~~~~~~~~~
・ドライブの全ファイルをb:\bakへバックアップし、かつ b:\bakにしか
 存在しなくなったファイルを削除します。
 (2つのディレクトリのファイルを一致させる)
%ロ C:\>zcopy a:\ b:\bak /s /u /e
~~~~~~~~~~~~~~~~~~~~~~~~~
・バックアップすべきファイルを表示します。
■ 特殊機能
C:\>zcopy \ .doc .txt [text] \text /g
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
・ドライブのテキストファイルを、c:\text へ集めます。
C:\>zcopy \ vz \tool /s /m
~~~~~~~~~~~~~~~~~~~~~~
・c:\vz を c:\tool\vz へ移動します。
C:\>zcopy a: b: /s /c
~~~~~~~~~~~~~~~~~
・ドライブAとドライブBの全ファイルを比較します。
C:\>zcopy a: /s /x /del
~~~~~~~~~~~~~~~~~~~
・ドライブAの全ファイルを消去します。
 
%イ C:\>zcopy b:\bak \work /n /del
~~~~~~~~~~~~~~~~~~~~~~~~~~
・b:\bakをc:\workと比較し、b:\bakにのみ存在するファイルを削除します。
%ロ C:\>zcopy a:\ editfile. /g /e
~~~~~~~~~~~~~~~~~~~~~~~~~
・ドライブAで editfile というファイルをサーチします。
C:\>zcopy .obj .bak /del /e
~~~~~~~~~~~~~~~~~~~~~~~
・カレントディレクトリの *.obj *.bak ファイルを削除し、削除したファイル
 名を表示します。
■■■ 解説 ■■■
■ ディレクトリとファイルマスクの識別
 ディレクトリとファイルマスクは、以下のロジックで識別します。
「'\'で終わっているか?」
Yes → [ディレクトリ]
No ↓
「'.'またはワイルドカード文字が含まれているか?」
Yes → [ファイルマスク]
No → [ディレクトリ]
 ZCOPYがサポートしていないコピー方式
 ・リネームコピーcopy *.txt *.bak
 ・複数ファイルの連結copy a+b c
 ・デバイスへのコピーcopy a prn
 ・XCOPYのオプション/D /P /W
■ 空ディレクトリの扱い
 XCOPYのオプション「/E」は、ZCOPYにはありません。空ディレクトリは、以下の
ように扱います。
 ・全ファイル指定時   → 空ディレクトリもコピー
 ・ファイルマスク指定時 → 空ディレクトリはコピーしない
■ マルチ・ライトオープン方式
 MS-DOSの各プロセスは、20個までファイルをオープンする事ができます。
このうちの5個は予約済みですから、最大15個のファイルを同時にライトオープン
できる計算になります。
 もちろん、CONFIG.SYSのFILES=の指定がこれより小さい場合は、FILES=指定に制限
されます。
 DIET等のユーティリティを常駐させている場合、ZCOPYが全てのハンドルを使って
しまうと、DIETがファイルを開けなくなり、誤動作する危険性があります。
この場合は、FILES=30 以上を指定してください。
 いずれにしろ、FILES=30 を指定しておくべきでしょう。
 「/g」指定時は、書き込み毎にターゲットファイルを比較する必要から、本機能は
動作しません。
■ インクリメンタル・コピー機能
 増分のみコピーするのは、それ以前の内容が一致している場合に限るべきです。
このため、ターゲットファイルの末尾(4KB未満)を読み込み、ソースファイルと
比較しています。
 また、ターゲットファイルのサイズが32KB以上でなければ、インクリメンタル
コピーは働きません。
■ ディレクトリ・タイムスタンプのコピー機能
 DOSのシステムコールでは、ディレクトリのタイムスタンプを変更することは
できません。このため、一時的に現在日時をソースディレクトリの日時に変更して
から、ディレクトリを作成しています。
■ ベリファイの手法
 ZCOPYの「/v」指定時のベリファイでは、の「VERIFY FLAG」を使用しません。
メモリ上のファイルを書き込んだ直後に、再度ターゲットファイルを読み込み、
メモリ内容と比較しています。
 このため、大容量のディスクキャッシュが組み込まれている場合には、キャッシュ
から読み込んで比較しているだけになる可能性があります。
■ 削除の手法
 ファイルの削除は、以下の方法で行ないます。
 ・全ファイル指定時   → FCBによる一括削除(ファンクション13h)
 ・ファイルマスク指定時 → パス名による削除(ファンクション41h)
 
■ コピーの中断
 ファイルコピーの途中に、CTRL+C の入力、またはエラーの発生でコピーが中断する
と、ターゲットパスにいくつかのサイズ0のファイルが残ります。
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ただし、ディスクフルによる中断で「/v」を指定していない場合は、これらの
ファイルはきちんと消去します。
■ VZエディタとの連携
 VZエディタをお使いの方は、以下の例のように、エイリアス、およびファイラー
のメニューを変更すると便利でしょう。
 「X 一括コピー」、「Z 一括削除」、「T 一括移動」は、サブディレクトリを選択
した時に呼び出します。
 サブディレクトリの選択機能は、Ver1.57で追加されました。)
* S システムメニュー
8 "",15,12
"C コピー copy %1 %2"
"M 移動 move %1 %2"
"D 削除 del "
"X 一括コピー zcopy2 %1 %2"
"T 一括移動 move2 %1 %2"
"Z 一括削除 zap "
"P パック lha a %2 %*"
"U アンパック lha x "
"V パックリスト lha l "
"A 比較(Asc) fca %1 %2"
"B 比較(Bin) fcb %1 %2"
"E 実行 %1 %2"
* A エイリアス
...
move zcopy /m
zap zcopy /s /x /del
zcopy2 zcopy /s %1 %2%\%>\
move2 zcopy /s /m %1 %2%\%>\
■ エラーメッセージ
Syntax error
書式が違います。
Unknown option:
未定義のオプションを指定しています。
File not found
指定したファイルが見つかりません。
Path not found
指定したパスが見つかりません。
Destination must be a path
ターゲットパスにファイルを指定しています。
Source and destination are the same path
ソースとターゲットが同一のディレクトリです。
Access denied:
ファイル/ディレクトリのタイプが異なるか、リードオンリ属性のために
書き込めません。
Insufficient disk space
ディスクがいっぱいです。
Verify failure
ベリファイでエラーが発生しました。
Unexpected DOS error: n
DOSのエラー #n が発生しました。
■■■ 配布条件、その他 ■■■
■ 配布条件
 ZCOPYはフリー・ソフトウェアです。転載・配布は自由です。
 BBS以外のメディアへの転載の際は、作者へご一報ください。
■ 免責
 本プログラムを使用した上で生じたいかなる損害についても、作者は責任を負いま
せん。
■ 変更履歴
Ver0.91 (92-3-14) テスト版
Ver1.00 (92-3-30) 正式公開版
Ver1.01 (92-4-1)
 ・「/m」指定時、カレントディレクトリがルートへ移動してしまう。
 ・「a*.*」を「a\*.*」と解釈してしまう。
 ・「/s /del」でファイルマスクを指定すると、削除されない場合がある。
 ・「src\file」で拡張子のないfileの末尾の「.」を省略可能に。
Ver1.02 (92-4-7)
 ・他ドライブへmoveすると、ソースディレクトリが削除されてしまう。
 ・「/u,/i」指定時、ソース側ファイルの属性リードオンリetc.)をコピーしない
  ように。
 ・ファイル削除時のターゲットパスの指定。(→ %イ)
 ・ファイル削除時「n File(s) deleted」を表示。
Ver1.03 (92-4-8)
 ・他ドライブへのmove時、File(s)表示が2倍になる。
 ・copymove時、ターゲットパスに同名ファイルリードオンリファイルが存在
  する場合もcopymoveを強行するように。
 ・上記変更に伴い、「/u,/i」指定時も属性をコピーするように。
Ver1.04(92-5-6)
 ・「zcopy a:\ dir /s /del」とすると、「dir」がターゲットパスとみなされ「a:\」
  の全ファイルが削除されてしまった。これを避けるため、「/n /o /u」が指定され
  た時のみ、削除時のターゲットパスを認識するように変更。
 ・switchar'-'時、「a:/」が指定できなかった。
Ver1.05(92-6-26)
 ・<src>を省略すると、[<mask>]の最初の項目が無視される。
 ・[<mask>]を指定すると、拡張子のないファイルが選択されない。
 ・「zcopy \src \dst /s /c」で、\dstの直下にファイルが存在しない時、
  それ以下のサブディレクトリのファイルを比較しない。
 ・「/e: Echo」オプションを追加。→ %ロ)
Ver1.06(92-7-1)
 ・削除時に、ファイルマスクの排他指定が効かない。
Ver1.07(92-7-9)
 ・「/s /o /u」で、ターゲットパスでファイルが存在しないサブディレクトリの
  ファイルも、コピーされてしまう。Ver1.05のデグレード)
Ver1.10(93-10-20)
 ・レスポンス・ファイルに対応。
Ver1.11(93-10-24)
 ・レスポンス・ファイル指定時の/del,/m,/uのバグフィックス。
Ver1.20(93-12-6)
 ・レスポンス・ファイル指定時、カレントディレクトリから他ドライブへのmoveで
  元ファイルが削除されない。
 ・「/n」でターゲットパスのファイルのサイズがの場合は、コピーを実行。
 ・「/del /s」でルートディレクトリを指定した場合に、確認メッセージ。
93/12/6 兵藤嘉彦c.mos
NIFTY-Serve GCA03652
==============================================================================
End of zcopy.doc
==============================================================================