1. ホーム
  2. スクリプト・コラム
  3. DOS/BAT

バッチ処理共通DOSコマンド(attrib、del、copy、xcopy)のバッチ処理マニュアル

2022-02-10 20:58:42

1.2 attrib del copy xcopyコマンドの学習

学習のポイント
1. ファイル属性:attributeを設定する
2. 削除コマンド:del
3. ファイルをコピーする:コピー
4. ファイル(フォルダ)をコピーする:xcopy

I. ファイル属性の設定:attribute

ファイルの属性を表示または変更します。
ATTRIB [ R | -R] [ A | -A ] [ S | -S] [ H | -H] [[drive:] [path] filename] [/S [/D] ]である。

     属性を設定します。
  - 属性をクリアする。
  R 読み取り専用のファイル属性です。
  A アーカイブファイル属性です。
  S システムファイルのプロパティ。
  H ファイルの属性を非表示にします。
  [ドライブ:][パス][ファイル名] 処理するファイルの属性を指定します。
  /S 現在のフォルダーとそのサブフォルダー内の一致するファイルを処理します。
  /D フォルダーも処理します。


1. ファイルのプロパティを表示する
フォーマット ATTRIB [ドライブ:][パス][ファイル名]。

例1,
属性 d:\ pagefile.sys
d:\ pagefile.sys ファイルのプロパティを表示します。

2. ファイルのプロパティを変更する。
フォーマット:attrib ? 属性(Attributes)

例1.
attrib -h d:\ pagefile.sys
d:\ pagefile.sys から "hidden" 属性を削除します。

例2.
属性 s h d:\ pagefile.sys
d:\ pagefile.sys の "system" と "hidden" 属性を設定します。

3. バッチファイル処理

例1,
attrib h d:\123*.bat /s
sパラメータを使用すると、d: \123とそのサブディレクトリにあるすべてのbatファイルに"hidden"属性を一括で設定することができます。

例2,
属性 h d:\123 /s /d
d:\123 とその下の123と同じ名前のサブディレクトリを全て"hidden"属性に設定します。指定されたディレクトリとサブディレクトリのファイル属性を一括して設定するには、/d パラメータを使用する必要があります。
指定されたディレクトリとその下のすべてのサブディレクトリのファイル属性を設定するには、/d パラメータを使用する必要があります。d 引数は "ディレクトリ" として解釈され、/d は /s と共に使用されなければならないことを意味します。


検討する。

 attrib h d:\123 /s /quot;と "attrib h d:\123* の違いは何ですか?* /s /d"は違うのですか?
前者は d:\123 とその同名のサブディレクトリのみ "hidden" に設定されており、それ以外のファイルやサブディレクトリは "hidden" に設定されていないのです。

削除コマンド:del

1つまたは複数のファイルを削除します。
DEL [/P] [/F] [/S] [/Q] [/A[[:属性]]] 名前
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] の名前

  names は、1つまたは複数のファイルまたはディレクトリのリストを指定します。ワイルドカードは次のように使用できます。
                複数のファイルを削除します。ディレクトリが指定された場合、そのディレクトリ内のすべてのファイル
                は、ディレクトリ内のすべてのファイルが削除されます。

  /P 各ファイルを削除する前に確認のプロンプトが表示されます。
  /F 読み取り専用ファイルの削除を強制します。
  /S すべてのサブディレクトリから指定されたファイルを削除します。
  /Q クワイエットモード。確認を求めることなく、グローバル ワイルドカードを削除します。
  /A 属性に基づいて削除するファイルを選択します。

  属性 R 読み取り専用ファイル S システムファイル
                  H 隠しファイル A アーカイブファイル
                  - No"のプレフィックス。

基本的な書式です。DEL [ドライブ:][パス][ファイル名]。

例1.
del d:\123abc.txt
abc.txtを削除する


/P 各ファイルを削除する前に確認を求めるプロンプトが表示されます。

例2,
del /p d:\123*. *
d:\123 ディレクトリのすべてのファイルを削除します。削除する前に全部削除していいか聞いてくるようにしたい場合は、誤って削除しないように/pパラメータを追加します。


/S すべてのサブディレクトリから指定されたファイルを削除します。

例3,
del /s d:\123*. *
d:\123 ディレクトリとそのサブディレクトリにあるすべてのファイルを削除します。
del コマンドは、/s パラメーターを使用すると、指定したディレクトリ(指定しない場合はカレントディレクトリ)とそのサブディレクトリにある指定したファイル名のすべてのファイルを検索し、削除します。
は、その


/Q クワイエットモード。グローバルワイルドカードを削除する際に確認を必要としません。

例4.
del /s /q d:\123**. *
d:\123 ディレクトリとそのサブディレクトリにあるすべてのファイルを削除します。
q パラメータを使用すると、確認せずに直接削除します。


/A 属性に基づいて削除するファイルを選択します。

例5,
del /ar /s d:\123**. *
d:\123 ディレクトリとそのサブディレクトリから読み取り専用属性のファイルをす べて削除します。
ここでは、/a: attributes パラメータで指定された属性を持つファイルを削除対象として選択します。ファイル属性の属性、オプションで r (読み取り専用)、s (システム)


III. ファイルをコピーする:コピー

コピーはファイルのみ可能で、フォルダはコピーできません。

1. 単一ファイルのコピー

書式:コピー元[ドライブ:][パス][ファイル名] [コピー先[ドライブ:][パス][ファイル名]]。
コピー元ファイル(パス、ファイル名を含む)をコピー先ファイルのパス[∕ファイル名]にコピーする場合。
[ファイル名]]はデフォルトでカレントディレクトリです。

例1.
コピー c:\123.txt d:\...
123.txtをd: \ディレクトリにコピーします。成功すると、コマンドラインウィンドウに "1 file copied" と表示されます。

例2.
コピー c:\123.txt d:\abc.bat
123.txtをd: \ディレクトリにコピーし、abc.batに変更します。ここではファイル名とその形式を変更します。

例3.
をコピーします。\123
カレントディレクトリの123サブディレクトリにあるすべてのファイルをカレントディレクトリにコピーします。ここがちょっとわかりにくいようですが、ハァッ、説明してください:例えば、カレントディレクトリが
c:\windows には多くのサブディレクトリがありますが、そのサブディレクトリの 1 つ 123 にあるファイルをすべてカレントディレクトリ c:\windows にコピーすれば、はっきりします。

2.ファイルの一括コピー

例1,
コピー c:\123 d:\abc
c:\123 ディレクトリのすべてのファイルを d:\abc ディレクトリにコピーします。

例2,
copy c:\123*.rm d:\abc /y
コピー先ディレクトリが既に存在し、コピー元ディレクトリが同じファイルをコピーしようとしている場合、c:㈳123ディレクトリ内のすべてのファイルをrm形式でd:㈳abcディレクトリへコピーします。
コピー元ディレクトリにコピーするファイルと同じ名前のファイルがコピー先ディレクトリに既に存在する場合は、"x: \xxを書き換えますか?のようなメッセージが表示されます。(Yes/No/All):" のようなメッセージが表示され、上書きするか、上書きしないか、すべて上書きするかを選択することができます。
yパラメータ(個別ファイルまたは一括コピー時に使用可能)を使用すると、確認なしで名前を変更したファイルを上書きすることができます。

3. ファイルのマージ
書式:copy /b file1 + file2 + ...... fileN マージされたファイル名

例1.
コピー /b d:\1.mp3 d:\2.mp3 e:\3.mp3
1.mp3と2.mp3を3.mp3に合成する。

例2,
コピー /b d:\1.txt d:\2.mp3
1.txt と 2.mp3 をマージします。ここではファイル名を指定しません。デフォルトでは、マージされるファイル名はコマンドの最初のファイルの名前になります。
ここでは、2.mp3が1.txtにマージされています。


画像ファイルの末尾に隠しテキストデータがある場合、他のソフトで編集して保存すると、隠しテキストデータが消失することがあります。
この方法で接続したMP3ファイルは、連続再生が可能です。
画像や曲などのバイナリファイルは、/b パラメータ(b はバイナリ)を使用してマージする必要があり、そうでない場合はマージに失敗します。
(a は ASCII、テキストファイルの略) これはプレーンテキストのマージにのみ使用できます。2 つのパラメータを同時に使用することはできません。バイナリ方式では、テキストファイルとバイナリファイルをマージすることができます。
textメソッドは、textのみ結合可能です。

IV. ファイル(フォルダ)のコピー: xcopy

ファイルやディレクトリツリーをコピーします。
XCOPY ソース [宛先] [/A | /M] [/D[:date]]. [P] [/S [/E]]です。[/V] [/W]
                           c] [/i] [/q] [/f] [/l] [/g] [/h] [/r] [/t] [/u] [/u
                           k] [/n] [/o] [/x] [/y] [/z] [/y] [/z] 。
                           [EXCLUDE:ファイル1[ ファイル2][ ファイル3]...]です。

 ソース
 必須項目です。コピーするファイルの場所と名前を指定します。パラメータには、ドライブまたはパスを含める必要があります。
 目的地
 省略可。コピーするファイルの保存先を指定します。パラメータには、ドライブ文字とコロン、ディレクトリ名、ファイル名、またはそれらの組み合わせを指定することができます。
Destination が省略された場合、xcopy コマンドはファイルをカレントディレクトリにコピーします。


xcopyで使用できるパラメータは非常に多いので、ここでは一般的なものをいくつか紹介します。

/S 空でないディレクトリとサブディレクトリをコピーします。s が省略された場合、xcopy は 1 つのディレクトリで動作します。

例1,
xcopy /s d:\123 e:\kkkk
d:\123 ディレクトリ内のファイル(フォルダ)を、空のサブディレクトリを除いて e:\kk にコピーします。(デフォルトでは、隠しファイルやシステムファイルはコピーされません。)


/E 空のディレクトリを含む、すべてのサブディレクトリをコピーします。e、/s、および /t コマンドライン オプションも使用します。

例2,
xcopy /e d:\123 e:\kkkk
d:\123 ディレクトリ内のすべてのファイル(フォルダ)を、空のサブディレク トリも含めて e:\kk にコピーします。(デフォルトでは、隠しファイルやシステムファイルはコピーされません。)


/H 隠しファイルおよびシステムファイル属性を持つファイルをコピーします。デフォルトでは、xcopy は隠しファイルまたはシステム ファイルをコピーしません。

例3,
xcopy /e /h d:\123 e:\kkkk
d:\123 ディレクトリ内のすべてのファイル(フォルダ)を、空のサブディレク トリも含めて e:\kk にコピーします。h パラメータを追加すると、隠しファイルやシステムファイルをコピーします。


/Tは、サブディレクトリ構造(すなわちディレクトリツリー)のみをコピーし、ファイルはコピーしません。空のディレクトリをコピーするには、/e オプションを含める必要があります。


/Y 既存のターゲットファイルを上書きするかどうかの確認を求めるプロンプトを無効化します。
コピー元ディレクトリにコピーするファイルと同じ名前のファイルがコピー先ディレクトリに既に存在する場合、"Rewrite X:\XXX (Yes/No/All)?" が表示されます。
このプロンプトでは、/yパラメータで、上書きするか、上書きしないか、すべて上書きするかを選択できるため、名前を変更したファイルを確認なしに上書きすることができます。


Destinationがファイルかディレクトリかを指定することに注意してください。
Destinationに既存のディレクトリがなく、かつバックスラッシュ(second)で終わっていない場合、次のようなメッセージが表示されます。

 宛先がファイル名を指定しているか
 またはターゲット上のディレクトリ名
 (F = ファイル、D = ディレクトリ)?

と聞かれます。
X:\XXX はファイル名ですか、それともディレクトリ名ですか?
(F = ファイル、D = ディレクトリ)?
 1つまたは複数のファイルをファイルにコピーする場合はFを、1つまたは複数のファイルをディレクトリにコピーする場合はDを押します。


反省しています。

xcopy /e d:\123 e:\kkkk と xcopy /e d:\123 e:\kkk を比較する 両者の違いは何ですか?
どちらも空のサブディレクトリも含めて、d:Ⅾ123ディレクトリ内のすべてのファイル(フォルダ)をe:ⅶkkにコピーしますが、前者では、以下の質問はありません。
ターゲットのe: \kkkはファイル名なのか、ディレクトリ名なのか
(F = ファイル、D = ディレクトリ)?