コマンドプロンプト」カテゴリーアーカイブ

21. 【COPY】ファイルをコピーする

COPYコマンドはファイルを複製するのが、主な機能となります。
エクスプローラーでの操作は、ファイルを、CTRLキーを押しながらドラッグ&ドロップすることによりコピーします。またファイルを右クリックし「コピー」し、「貼り付け」することでもコピーすることができます。

ではCOPYコマンドの書式を見てみましょう

書式:COPY [スイッチ] コピー元ファイル コピー先ディレクトリ

次の例はDocumentsディレクトリのtest.txtをDocumentsディレクトリ内のcopyfileディレクトリにコピーします。第一パラメータにはコピーしたいファイル。第2パラメータにはコピー先のディレクトリを指定します。

> COPY Documents¥test.txt Documents¥copyfiles

スイッチ一覧

オプションの種類機能
/d暗号化をサポートしない宛先にコピーする際に、暗号化されたファイルを復号化する。Windows のファイルシステムはNTFS。
/vコピー元とコピー先のファイルに差異がないか検証(Verify ベリファイ)する。
/n8.3形式の短いファイル名でコピーする。
/yファイルを上書きする前に確認プロンプトを表示しない。
/-yファイルを上書きする前に確認プロンプトを表示する(初期値)。
/z再起動可能モードでネットワークファイルをコピーする。
/lコピー元ファイルがシンボリックリンクの場合、ターゲットではなくシンボリックリンクのままコピーする。初期値ではターゲットをコピーする。
/aファイルをASCIIファイルとして扱う。
/bファイルをバイナリファイルとして扱う(初期値)。

/dスイッチはNTFSファイルシステム(Windows)上で暗号化されたファイルをFAT32ファイルシステムなど、暗号化をサポートしないファイルシステムにコピーする際に使用します。

/vスイッチを使用すると正しくコピーができたかどうか判断してくれます。

/zの再起動可能モードとはネットワークを通じてファイルをコピーする場合、途中でネットワークの接続が切れることがありますが、ネットワークが繋がるとコピーの続きをおこなってくれるモードです。ネットワークでファイルの複製をする場合はつけておきましょう。

/l(L)はコピー元がシンボリックリンクの場合、リンクの元ファイルではなく、シンボリックリンク自身をコピーします。スイッチをつけないとリンクの元ファイルをコピーします。

最後に/a,/bですが、COPYコマンドは初期値でファイルがバイナリーであっても、ASCIIであっても、バイナリーファイルとしてコピーします。その場合、テキストデータが文字化けを起こすことがあります。これを避けるには/aスイッチをつけて、ASCIIファイルとしてコピーをします。/bは初期値です。

  • ASCIIファイル 文字データのみで構成されたファイルをASCIIファイルと呼ぶ。
    txt, .c, .csv, .html, .css, .js, .bat(などの拡張子を持つ文字データのみで作成されたデータ)
  • BINARYファイル コンピュータが理解しやすい形のデータ。2bitや16ビットで表現されて人間には理解しにくい。
    .exe, .jpg, .mov, .wav(などの拡張子を持つ2進数で構成されたデータ)

COPYコマンドの標準的な使い方。

COPY copy-source copied

例)copy-sourceディレクトリをcopiedディレクトリ内にコピーする。

第1パラメータはコピー元を指定します。コピー元にはファイル、ディレクトリを指定します。コピー先にはコピー先ディレクトリを指定しましょう。この場合、ファイルを指定することはできません。

複数ファイルを結合して一つのファイルとしてコピーする
(ASCIIファイルとしてコピー)

COPY text1.txt+test2.txt margedtext.txt

例)テキストファイルtest1.txtとテキストファイルtest2.txtを結合してmargedtext.txtとして保存する。

この場合、margedtext.txtにはtest1.txtが最初、test2.txtがその次といったように、式の順に結合される。また結合したいファイルは「+」記号で結合させる。また結合したいファイルはスペースなど挟まずに1パラメータとして入力する。

キーボードからテキストを入力してファイルとして保存する。

COPY con keyboard-input.txt

例)デバイスファイル「con」の内容をkeyboard-input.txtに保存する。

第1パラメータのコピー元にデバイスファイルであるconを指定する。conはキーボード(console)を表し、キーボードから入力されたデータをコピー先で指定したテキストファイルに保存する。使い勝手は決して良くはないが、とりあえず入力したデータを保存しておくことはできる。

  • デバイスファイル ファイルシステム上であたかも通常のファイルのような形で提示されるデバイスドライバのインタフェースのこと。これにより、ソフトウェアが入出力システムコールを通してデバイスドライバを使うことができ、作業が単純化されます。

COPYコマンドはパラメータにしてする内容によって、「 ファイルをコピーする。」「複数のファイルを結合する」「キーボードからテキストを入力してファイルとして保存する」など、さまざまな処理を行うことができます。それぞれの特性をよく理解して適切に使い分けられるようにしましょう。

20.環境変数について

環境変数とはOSなどのシステムが提供する情報共有の仕組みをいいます。OSはOS上で動作するアプリケーションと情報共有するための簡易なデータベースを持っています。

このデータベースは変数の形をとっており「変数名=値」という書式で表すことができます。主な内容としてはWindowsの場合、Windowsのバージョンや、アプリケーションの保存場所、ユーザーディレクトリの保存場所、起動可能なファイルの拡張子などがあります。

環境変数はWindowsのみが持つものでなく、UNIX, Linux, MacなどほとんどのOSで持っていますし、OSとは異なりますが、Linuxなどで使用されるシェルや、Webでもそれぞれ独自の環境変数が使われています。

それでは、環境変数はそのようにして利用されているのでしょうか?
各OS上で動作するアプリケーション(タスクと言います)は、起動時にOSの持つ環境変数のコピーを作成し、アプリケーション内で変数の値を参照、編集を行います。通常、編集された環境変数はアプリケーション終了時に破棄されますが、必要であればOSに戻されます。

環境変数は変数を使用しますが、プログラムで使用されている変数と違って、整数や不動小数点など様々な「型」を持っていません。環境変数がサポートすることのできる型は文字列型のみとなります。

環境変数の種類や値を確認するにはコマンドプロンプトの「SET」コマンドを使用すると簡単です。コマンドプロンプトではなくWindows上で確認するには以下のようにして表示させます。

環境変数パネルを表示する

「設定」から「システム」を選択し、左ペインから「バージョン情報」を選択します。バージョン情報画面の右側に「システム情報」があるので、それをクリックします。

システム情報をクリックするとコントロールパネルの「システム」が表示されますので、右ペインにある「システムの詳細設定」をクリックします。

ここまでの過程はタスクバーの検索窓に「システムの詳細設定」と入力することで省略することもできます。

システムの詳細設定をクリックすると「システムのプロパティ」パネルが表示されるのでパネル下部にある「環境変数」をクリックします。

「環境変数」パネルが表示されました。パネル上部がユーザー環境変数で、この部分はユーザーごとに違います。下部はシステム環境変数といい、システム構成によってはあまり違いがありません。(ぼかしの部分にはパスが書かれています。詳細は皆さんの環境で確かめて下さい。)

パネルを見ると「新規」「編集」「削除」と書かれていますが、既存の環境変数を編集、削除してしまうと、アプリケーションが動かなくなったり、システムが適切に動作しなくなることがあるので注意が必要です。編集などが必要な変数名と値をよく確認してから使うようにしましょう。

また、誤って編集や削除をしてしまった時のために、環境変数のバックアップを作っておくといいでしょう。

環境変数のバックアップ

環境変数のバックアップを取るにはいくつか方法がありますが、ここではコマンドプロンプトを使った方法を紹介します。

必要なコマンドは環境変数の内容を表示するコマンド「SET」コマンドです。SETコマンドは簡単な書式で環境変数の、一覧表示、絞り込み、編集、削除ができます。次に必要となるのがリダイレクトです。

このブログをずっとご覧いただいている方ならこの時点で何をするのかわかられると思いますが、念のため説明しておきましょう。

まず、コマンドプロンプトを立ち上げて、SETコマンドを使い環境変数の一覧を表示させます。次に同じ内容でリダイレクトを使いファイルに保存します。以上でバックアップ終了です。簡単ですね!

環境変数は文字列型の変数です。変数名とその値がテキストで書き出せれば、間違って編集してしまったり、削除したとしても新規に同じ変数名、値で作り直せば元に戻すことができます。

では実際にバックアップファイルを作成してみましょう。

> SET > environment-var.txt

これでカレントディレクトリにenvironment-var.txtというファイルが作成されます。TYPEコマンドなどで内容を表示してみましょう。

> TYPE environment-var.txt
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\uotaa\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=WINDOWS10
ComSpec=C:\Windows\system32\cmd.exe
DriverData=C:\Windows\System32\Drivers\DriverData
HOMEDRIVE=C:
HOMEPATH=\Users\kobedneshi
LOCALAPPDATA=C:\Users\kobedneshi\AppData\Local
LOGONSERVER=\\WINDOWS10
NUMBER_OF_PROCESSORS=6
OneDrive=C:\Users\kobedneshi\OneDrive
OneDriveConsumer=C:\Users\kobedneshi\OneDrive
OS=Windows_NT
Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Users\uotaa\AppData\Local\Microsoft\WindowsApps;;C:\Users\uotaa\AppData\Local\Programs\Microsoft VS Code\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 10, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=9e0a
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\kobedneshi\AppData\Local\Temp
TMP=C:\Users\kobedneshi\AppData\Local\Temp
USERDOMAIN=WINDOWS10
USERDOMAIN_ROAMINGPROFILE=WINDOWS10
USERNAME=kobedneshi
USERPROFILE=C:\Users\kobedneshi
windir=C:\Windows

と、こんな感じの内容が表示されたともいます。パッと見るだけだと何が何だかわからないかもしれませんが、じっくりよーく見てみると、全て「変数名=値」で書かれていることがわかります。

例えば、最後から3行目にある「USERNAME=kobedneshi」皆さんの アカウント名ですね。「HOMEPATH=\Users\kobedneshi」はホームディレクトリのパスがHOMEPATHという変数に入っています。

全ての変数の役割がわかるようになるにはコンピュータの知識がそれだけ必要になりますが、変数名からそれぞれの意味を調べてみるのも面白いでしょう。

環境変数一覧

環境変数名意味
ALLUSERSPROFILEAll Usersのプロファイルパス
APPDATAアプリケーションデータディレクトリ
CommonProgramFilesプログラムファイル用の共通ディレクトリ
CommonProgramFiles(x86)32bitプログラムファイル用の共通ディレクトリ
CommonProgramW643264Bitプログラムファイル用の共通ディレクトリ
COMPUTERNAMEコンピュータ名
ComSpeccmd.exeの絶対パス
DriverDataドライバーデータディレクトリ
HOMEDRIVEホームドライブ
HOMEPATHホーム(ディレクトリへの)パス
LOCALAPPDATAローカルのアプリケーションデータ
LOGONSERVERログオンしているサーバ名称
NUMBER_OF_PROCESSORSプロセッサー数(CPUのCore数)
OneDriveOneDriveディレクトリ
OneDriveConsumer
OSオペレーティングシステム名称
Pathパスの一覧。登録されたディレクトリではパスなしで実行可能
PATHEXT拡張子無しで実行可能なファイル
PROCESSOR_ARCHITECTUREアーキテクチャ
PROCESSOR_IDENTIFIERCPUの詳細
PROCESSOR_LEVELCPUのFamily 値
PROCESSOR_REVISIONCPUのリビジョン
ProgramDataプログラム用データディレクトリ
ProgramFilesプログラム用ディレクトリ
ProgramFiles(x86)32bitプログラム用ディレクトリ
ProgramW643264Bitプログラム用ディレクトリ
PROMPTコマンドプロンプトの出力タイプ
PSModulePathPowerShellモジュールのパス
PUBLICPublicフォルダ
SESSIONNAMEセッション名
SystemDriveシステムドライブ
SystemRootシステムルート
TEMPテンポラリディレクトリ
TMPテンポラリディレクトリ
USERDOMAINログオンしているドメイン名
USERDOMAIN_ROAMINGPROFILEログオンしているドメイン名
USERNAMEユーザ名
USERPROFILEユーザープロファイルディレクトリ
windirWindowsディレクトリ

19.【SORT】テキストデータの行を並べ替える

SORTコマンドはASCII形式のデータを行単位で並べ替えをします。並び替えは一般にA→Zの順を「昇順」、Z→Aの順を「降順」といいます。このページでは特に指定がされていない場合は昇順で並べ替えをしています。

昇順、降順は普段から使い慣れていないと、いざというとき「あれっ?昇順だったけ?降順だったけ?」となりますので、どちらか一方をしっかり覚えておくといいでしょう。

通常使用時
書式: SORT [スイッチ] [パス]ファイル名
例: SORT sort-text.txt 
リダイレクト使用時
書式: SORT [スイッチ] < [パス]ファイル名
例: SORT < sort-text.txt
パイプ使用時
書式: コマンドA | SORT [スイッチ]
例: DIR /S | SORT

上記の例は、それぞれ「通常のコマンド使用」「リダイレクトで使用」「パイプで使用」した場合の例となります。通常使用時、リダイレクト共に入力はファイルから受け取り、出力は標準出力であるウインドウに出力していますが、パイプはDIRの実行結果を受け取って直接データを再処理しています。

SORTコマンドはMOREやFINDと同様にパイプ使用時にフィルターとして働くフィルターコマンドの一つです。並び替え作業は、多くの場合人にとっては苦痛を伴う単純作業となりますが、コンピュータにとっては得意分野の一つです。しっかり使えるようにしましょう。

スイッチ一覧

オプションの種類機能
/r逆順で並べ替える
/+n指定した桁数から並べ替える。少ない場合は他の行より前に照合される
/m並べ替えに使うメインメモリのサイズをKBで指定する
/rec numレコードの最大文字数を指定する
/o ファイル名指定したファイルに並び替えた結果を出力する

スイッチはまず「/r」「/+n」を覚えましょう。SORTコマンドは通常、昇順で並べ替えをしますので、/rを使うと昇順の逆順ですから降順で並べ替えをすることになります。

また/+nとするとnで指定した桁数の文字を基準に並べ替えを行います。指定しないと1文字目を基準に並べ替えします。

2020/07/17  09:34    <DIR>          .vscode
2020/07/24  00:48    <DIR>          3D Objects
2020/07/24  00:48    <DIR>          Contacts
2020/08/03  00:46    <DIR>          Desktop

とテキストがあった場合、月で並べ替えるなら「/+6」、日にちで並べ替えるなら「/+9」とすればいいわけです。

それでは、一度コマンドプロンプトで実行してみましょう。
まずはDIRコマンドのみ場合

> DIR
 ドライブ C のボリューム ラベルは Windows10 です
 ボリューム シリアル番号は C841-2070 です

 C:\Users\kobedenshi のディレクトリ

2020/07/25  14:02    <DIR>          .
2020/07/25  14:02    <DIR>          ..
2020/07/17  09:34    <DIR>          .vscode
2020/07/24  00:48    <DIR>          3D Objects
2020/07/24  00:48    <DIR>          Contacts
2020/08/03  00:46    <DIR>          Desktop
2020/07/16  23:56    <DIR>          Documents
2020/08/02  22:20    <DIR>          Downloads
2020/07/24  00:48    <DIR>          Favorites
2020/07/17  00:07    <DIR>          Intel
2020/07/24  00:48    <DIR>          Links
2020/07/24  00:48    <DIR>          Music
2020/08/03  15:28    <DIR>          OneDrive
2020/07/24  00:48    <DIR>          Saved Games
2020/07/24  00:48    <DIR>          Searches
2020/07/24  00:48    <DIR>          Videos
               0 個のファイル                   0 バイト
              16 個のディレクトリ  71,582,953,472 バイトの空き領域

となります。次に同じコマンド使用して、上記のデータをSORTに渡し、昇順で並べ替えをします。

> DIR | SORT

実行結果は以下の通りとなります。

空白行
空白行
               0 個のファイル                   0 バイト
              16 個のディレクトリ  88,045,088,768 バイトの空き領域
 C:\Users\uotaa のディレクトリ
 ドライブ C のボリューム ラベルは Windows10 です
 ボリューム シリアル番号は C841-2070 です
2020/07/16  23:56    <DIR>          Documents
2020/07/17  00:07    <DIR>          Intel
2020/07/17  09:34    <DIR>          .vscode
2020/07/24  00:48    <DIR>          3D Objects
2020/07/24  00:48    <DIR>          Contacts
2020/07/24  00:48    <DIR>          Favorites
2020/07/24  00:48    <DIR>          Links
2020/07/24  00:48    <DIR>          Music
2020/07/24  00:48    <DIR>          Saved Games
2020/07/24  00:48    <DIR>          Searches
2020/07/24  00:48    <DIR>          Videos
2020/07/25  14:02    <DIR>          .
2020/07/25  14:02    <DIR>          ..
2020/08/02  22:20    <DIR>          Downloads
2020/08/03  00:46    <DIR>          Desktop
2020/08/03  15:28    <DIR>          OneDrive

目立つのは、最初の数行が空白行で並び替えられていますね。次にディレクトリーのリスト以外の部分。これらの行の特徴は最初にスペースが入っていることです。昇順にした場合、スペースは数字よりも先に並び替えられることがわかります。

今回はカレントディレクトリのみの並び替え結果ですが、サブディレクトリを含むと、空白行や先頭にスペースを含む行は多くなるでしょう。場合によっては数十行も空白行が続くことになるかもしれません。そうなってしまうとデータとして見にくいものになります。

その場合、MOREコマンドの「/s」や「/+n」スイッチを併用してやると見やすくなります。例として/sスイッチを使って最初の空白行を減らしてみましょう。

> DIR | SORT | more /s

結果は以下の通りで、最初の空白行がまとめて表示されています。

               0 個のファイル                   0 バイト
              16 個のディレクトリ  88,043,945,984 バイトの空き領域
 C:\Users\uotaa のディレクトリ
 ドライブ C のボリューム ラベルは Windows10 です
 ボリューム シリアル番号は C841-2070 です
2020/07/16  23:56    <DIR>          Documents
2020/07/17  00:07    <DIR>          Intel
2020/07/17  09:34    <DIR>          .vscode
2020/07/24  00:48    <DIR>          3D Objects
2020/07/24  00:48    <DIR>          Contacts
2020/07/24  00:48    <DIR>          Favorites
2020/07/24  00:48    <DIR>          Links
2020/07/24  00:48    <DIR>          Music
2020/07/24  00:48    <DIR>          Saved Games
2020/07/24  00:48    <DIR>          Searches
2020/07/24  00:48    <DIR>          Videos
2020/07/25  14:02    <DIR>          .
2020/07/25  14:02    <DIR>          ..
2020/08/02  22:20    <DIR>          Downloads
2020/08/03  00:46    <DIR>          Desktop
2020/08/03  15:28    <DIR>          OneDrive

このようにフィルターコマンドは入出力を併せ持っているので、パイプを使って必要な数の処理をデータに加えていくことができます。

18.【FIND】指定した”文字列”を含む行を抽出する

FINDコマンドはファイルやディレクトリ検索用のコマンドとよく勘違いされるコマンドですが、アスキー形式のファイルの内容に対して、指定した文字列で検索をかけて、文字列を含む行だけを表示するコマンドです。ファイルがどこに保存されているか調べるにはDIRコマンドを使用します。

通常使用時
書式: FIND [スイッチ] ”検索文字列” [パス]ファイル名
例: FIND "コマンドプロンプト" find-text.txt 
リダイレクト使用時
書式: FIND [スイッチ] ”検索文字列” < [パス]ファイル名
例: FIND "コマンドプロンプト" < find-text.txt
パイプ使用時
書式: コマンドA | FIND [スイッチ] "検索文字列"
例: DIR /S | FIND ”<DIR>”

上記の例は、それぞれ「通常のコマンド使用」「リダイレクトで使用」「パイプで使用」した場合の例となります。通常使用時、リダイレクト共に入力はファイルから受け取り、出力は標準出力であるウインドウに出力していますが、パイプはDIRの実行結果を受け取って直接データを再処理しています。この辺りはMOREコマンドと共通ですね。

FINDを使用する際、必要となるのは”検索文字列”です。文字列は必ず半角の””(ダブルクォート)でくくりましょう。また検索文字列には1byte文字はもちろん漢字やひらがななど2byte文字も使用可能です。

実際にFINDを使ってみましょう。今回は通常のDIRコマンドの出力と、パイプを使用して「DIRコマンドの出力を受けて、文字列を含む行を抽出して表示」させた出力を比較してみましょう。

まずはDIRコマンドのみ場合

> DIR
 ドライブ C のボリューム ラベルは Windows10 です
 ボリューム シリアル番号は C841-2070 です

 C:\Users\kobedenshi のディレクトリ

2020/07/25  14:02    <DIR>          .
2020/07/25  14:02    <DIR>          ..
2020/07/17  09:34    <DIR>          .vscode
2020/07/24  00:48    <DIR>          3D Objects
2020/07/24  00:48    <DIR>          Contacts
2020/08/03  00:46    <DIR>          Desktop
2020/07/16  23:56    <DIR>          Documents
2020/08/02  22:20    <DIR>          Downloads
2020/07/24  00:48    <DIR>          Favorites
2020/07/17  00:07    <DIR>          Intel
2020/07/24  00:48    <DIR>          Links
2020/07/24  00:48    <DIR>          Music
2020/08/03  15:28    <DIR>          OneDrive
2020/07/24  00:48    <DIR>          Saved Games
2020/07/24  00:48    <DIR>          Searches
2020/07/24  00:48    <DIR>          Videos
               0 個のファイル                   0 バイト
              16 個のディレクトリ  71,582,953,472 バイトの空き領域

となります。次に同じコマンド使用して、上記のデータをFINDに渡し、文字列”Documents”で抽出します。

> DIR | FIND "Documents"
2020/07/16  23:56    <DIR>          Documents

実行するとDocumentsの文字列を含む行のみ表示されました。

スイッチ一覧

オプションの種類機能
/v指定した文字列を含まない行をすべて表示する
/c指定した文字列を含む行の数だけを表示する
/n行番号を表示する
/i大文字と小文字の区別をしないで検索する

FINDには上記のようなスイッチがあり、必要に応じて文字列を含ませたり、除外したりできます。特に説明を必要とするスイッチもないように思います。

より高度で高速な検索機能が必要な方は「FINDSTR」コマンドをお勧めします。FINDSTRでは再帰的検索正規表現を使用した高度な文字列検索もできるようになっています。

17.【MORE】画面単位で区切って表示する

とても長いテキストファイルや、出力データが膨大な処理結果をコマンドプロンプトで表示させると、出力状況に応じてどんどんスクロールしていき、最後には画面バッファ量を超えると、一行目から順にデータが削除されていきます。

MOREコマンドは入力を受け付けると、画面サイズで区切って順に出力してくれます。そのためスクロールで内容が読めなくなることもありませんし、データ量が多すぎて、データが消えてしまうこともありません(DIRコマンドの/pスイッチのような働きをします)。

使い方としては、通常のコマンドのようにファイルを指定して表示させる方法と、パイプ機能を利用してMOREにコマンドの処理結果を読み込ませて、ページごとに表するように再処理することもできます。

書式: MORE [スイッチ] [パス]ファイル名 ※通常使用
例: MORE more-text.txt 
書式: MORE [スイッチ] < [パス]ファイル名 ※リダイレクトを使用した場合
例: MORE < more-text.txt
書式: コマンドA | more [スイッチ] ※パイプを使用した場合
例: DIR /S | more

書式はどういうシーンでMOREコマンドを使用するかによって違ってきます。最初の書式は通常のファイルを指定する方法、2つ目の書式はリダイレクトを使って標準入力をファイルに切り替えて表示する方法、3つ目はパイプ機能を使ってコマンドの標準出力をMOREの入力に接続してデータを再処理する方法です。目的に応じて柔軟にデータの選択ができるので便利ですね。

複数のファイルを開く

MOREは複数ファイルの表示に対応しています。

> MORE Multiple1.txt Multiple2.txt

のように半角スペースで区切ってファイルを指定します。ファイルがカレントディレクトリにない場合は、それぞれのファイルごとにパスが必要になります。

> MORE Documents¥Multiple1.txt Document¥Multiple2.txt

複数ファイルを指定した場合は、最初に指定したファイルから順に表示されます。1ファイル目を表示し終えたら2ファイル目という具合です。ファイルを表示している途中で2ファイル目を表示したい時は、「F」キーを押します。

スイッチ一覧

オプションの種類機能
/e拡張機能を有効にする(デフォルトはONの状態)
/Cページを表示する前に画面を消去する
/Pフォーム フィード文字を展開する
/S複数の空白行を1行に縮小する
/Tnタブをn個のスペースに置き換える(既定値は8)
/+n最初のファイルをn行目から表示する
※ nは数字が入ります。

キー操作一覧

オプションの種類機能
P n次のn行を表示する
S n次のn行をスキップする
F次のファイルを表示する
Q終了する
=行番号を表示する
?ヘルプを表示する
<space>キー次ページを表示する
<return>キー,<enter>キー次の行を表示する
コマンド実行後 — More(00%) — と表示されているときにキーを押す。

スイッチの/eですが、コマンドプロンプトの設定を変更していない限りはデフォルトでONになっていますので、通常使用することはありません。

/Cは現在表示されている内容を消去しますから、保存されていない内容を表示している時は注意が必要です。消去することで画面バッファをある程度確保する効果が見込めます。

/Sは複数にわたる空白行を1行にまとめてくれます。普段は/Sオプションをつけて作業しても良いでしょう。特にパイプ機能などを使ってSORTコマンドを使用した場合など、空白行が数十行続いて表示されたりしますので、そういうときには是非使いたいスイッチです。

/Tnは/T4などと記述して使用します。タブによるインデントをスペースによりインデントに置き換える際にスペースの個数を指定します。コード系のテキストを表示させるときに、TABのままではうまく画面表示できない時などに使用します。

/+nは/+100などと記述して使用します。指定した行数から表示します。

上記のオプションでは/s,/+nを覚えておくと、便利に使えると思います。その他のオプションはそれぞれの使い方に合わせて覚えていくといいでしょう。

MOREコマンドはDIRの/Pオプションを使うよりさらに細かな設定や操作ができるようになっています。簡易的に使用するなら/Pオプションでもいいですが、機能不足を感じるときにはパイプ機能を使ってMOREコマンドに渡した方が使いやすいでしょう。

16.パイプ 複数のコマンドを一度に実行する

前回の15.リダイレクト 入出力先を変更するでは、標準の入出力先をファイルに切り替えて、テキストファイルを読み込んだり、テキストファイルに書き込んだりしました。勘違いをしていけないのは、これは、テキストファイルを読み書きする機能ではなく、標準入出力(+エラー出力)を切り替える機能だということです。

さて、ここで「A」というコマンドで処理したテキストデータを「B」というコマンドさらに処理を加えたいとしたらどうすればいいでしょうか?

まず思いつくのが、「A」の処理結果をテキストで出力しておいて、次に「B」で保存したテキストデータを読み込んで処理をするという方法でしょうか?これなら前回のリダイレクトを使えばどうにかできそうです。

では、一度に「A」が処理した結果を、直接「B」が受け取って処理できないものでしょうか?これを実現するのがパイプ機能です。

パイプはコマンドAの出力をコマンドBの入力に接続します。蛇口にホースを繋いで、ホースの反対側をシャワーヘッドにつなぐイメージです。データはコマンドAの出力を出て、パイプを通り接続されたコマンドBの入力に渡されます。コマンドBは渡されたデータを元に新たに処理を開始します。これがパイプ機能の働く流れになります。

書式:コマンドA | コマンドB

コマンドA(必要なスイッチやオプションとともに) とコマンドB(こちらも同様)の間に半角スペースで区切って「|」パイプ記号を入力します。パイプ記号は一般的なJISキーボードならSHIFTキーを押しながら¥記号のキーを押します。USキーボードならSHIFTキーを押しながら\キーを押します。

パイプはコマンドAが標準出力へ出力したデータを、コマンドBの標準入力へ渡します。その後、コマンドBはその値を処理して標準出力へ実行した結果を出力します。今回の書式では2つのコマンドを接続していますが、この後パイプ記号を使うことで幾つでもコマンドを接続することができます。

注意するべき点は、コマンドAには出力するデータを持つコマンドを配置する必要があり、右側にはそのデータを受け取るための入力を持つコマンドを配置しなければいけない点です。

パイプ機能の例としては、大量のテキストを表示する場合。
DIRコマンドの/pオプションのような機能があれば便利ですが、必ずしもどのコマンドもこいったスイッチを持っているとは限りません。そういうときパイプ機能を使って、テキストデータをページごとに表示する「MORE」コマンドの入力としてDIRの出力を接続してやれば、1画面ごとにデータを分割して表示することができます。

例:
> dir /s | more

処理の流れとしては、まずDIRコマンドの標準出力がパイプの右側のMOREコマンドの標準入力となり、MOREコマンドで処理されたデータが標準出力であるディスプレイに表示される。

MOREコマンドのようにデータを受け取って再処理をすることのできるコマンドのことをフィルターコマンドなどと呼びます。以下にそのほかのフィルターコマンドを紹介します。

  • MORE テキストデータをページ分割して表示します。
  • FIND テキストデータ内から指定した文字列を検索する。
  • SORT テキストデータを行ごとに比較して行の並べ替えをする。

15.リダイレクト 入出力先を変更する

リダイレクト」とは本来の出力先や入力元とは異なるデザインすに出力や入力に切り替えることを言います。

リダイレクト機能を使えば、通常、コマンドプロンプトのウインドウに表示(出力)されるテキストをファイルに出力したり、キーボードでデータなどを入力するところをファイルを開いて取り込むことができます。

標準入力と標準出力、標準エラー出力

コマンドは必要に応じてデータを受け取ったり、処理した結果をウインドウ内に表示したりします。この「データを受け取る」ことを入力、データをウインドウなどに渡すことを出力と言います。さて、Windowsのみならず大抵のシステムは入出力に標準的なデバイス(周辺機器のこと)を設定しています。

入力用のデバイスであればキーボードで、これを標準入力と言います。また出力用のデバイスであればディスプレイ(Windowsでは各ウインドウに当たります。)で、これを標準出力と言います。コマンドは特に指示のない場合、標準入力であるキーボードからデータを受け取り、処理した結果を標準出力であるコマンドプロンプトのウインドウにデータを渡します。これらデータの流れをデータストリームといいます。

一般的なシステムのデータの流れ

標準入力をSTDIN(Standard input)、標準出力をSTDOUT(Standard output)といいます。また両方をまとめて標準入出力(STDIOで、Standard input output)といいます。

コマンドを実行したときにエラーが起きた場合、コマンドプロンプトは標準出力でエラーをウインドウに表示すると行ったことはせずに、別途、標準エラー出力というデータストリームを使用し、エラーメッセージをウインドウに表示させます。標準エラー出力はSTDERR(Standerd error output)と表記します。

リダイレクト記号

リダイレクトには入力元や出力先を、「線路の切り替え機」のように他のデバイスに切り替える機能があります。その機能を使って、本来キーボードから受け取る情報をテキストファイルから受け取ったり、ウインドウに表示される情報をテキストファイルに保存したりするには、リダイレクト記号を使います。

リダイレクト機能を使って、本来キーボードから受け取る情報をテキストファイルから受け取ったり、ウインドウに表示される情報をテキストファイルに保存したりするには、リダイレクト記号を使います。

リダイレクト記号には以下の3つがあります。

  • < 標準入力を他のデバイスに切り替え
  • > 標準出力を他のデバイスに切り替え
  • >> 標準出力を他のデバイスに切り替えてデータを追加する(append機能)

使い方は以下のように、まずコマンドを記述します。記述したコマンドに対してリダイレクト記号を記述します。さらに他のデバイスとして、ファイル名などを記述します。このコマンド、リダイレクト記号、デバイス名はそれぞれ半角スペースで区切ります。

例:
> DIR /S > directory-info.txt
> コマンド名 スイッチ リダイレクト ファイル名

標準出力をファイルに保存する

「>」のリダイレクト記号を使えば、本来ウインドウに表示されるコマンドの処理結果をテキストファイルなどに保存することができます。

書式:コマンド &gt; ファイル名

コマンドはスイッチやオプションなど、必要な情報を従来と同じように記述してください。リダイレクト記号は半角英数です。ファイル名はカレント以外の場所に保存する場合、パスが必要になります。

例題:カレント以下のディレクトリ情報をDocumentsディレクトリにdirectory-info.txtとして保存する。

> DIR /S > directory-info.txt

標準入力をファイルから入力する

「<」のリダイレクト記号を使えば、本来キーボードなどから入力されるデータをテキストファイルなどから受け取ることができます。

書式:コマンド < ファイル名

読み込むファイルがカレントに存在しない場合はパスが必要になります。

例題:カレント以下のディレクトリ情報を照準で並べ替える

> dir /s/a:d > directory-info.txt
> sort < director-info.txt

上記のコマンドは、1. DIRコマンドでディレクトリのみの情報を標準出力をdirectory-info.txtに切り替えて保存。2. 保存したファイルを標準入力を切り替えてSORTコマンドで読み込んで、並べ替えたデータをウインドウに表示します。

さらに並び替えたデータをdirectory-info-sorted.txtとして保存する場合は、

> dir /s/a:d > directory-info.txt
> sort < director-info.txt > directory-info-sorted.txt

というふうに、さらに「>」をつけてその後に保存したいファイル名を記述しましょう。

標準出力の内容を既存のファイルに追加する

「>>」のリダイレクト記号を使えば、本来ウインドウに表示されるコマンドの処理結果を「既存の」テキストファイルなどに追加して保存することができます。

書式:コマンド >> ファイル名

例題:リダイレクトを使用して作成したテキストファイルにデータを追加保存する

> dir pictures > directory-info.txt
> dir Documents >> directory-info.txt
> dir Music >> directory-info.txt

まず、Picturesディレクトリ内の情報がdirectory-info.txtにファイルとして保存され、次にDocuments内の情報がdirectory-info.txtに追加して保存される。最後にMusicの内容がdirectory-info.txtに保存されるため、テキストファイルの内容はPictures、Documents、Musicの順で保存されます。

 ドライブ C のボリューム ラベルは Windows10 です
 ボリューム シリアル番号は 7EEF-2850 です

 C:¥Users¥kobedenshi¥Pictures のディレクトリ

2020/07/06  14:12    <DIR>          .
2020/07/06  14:12    <DIR>          ..
2020/07/06  14:12    <DIR>          Camera Roll
2020/07/06  14:12    <DIR>          Screenshots
               0 個のファイル                   0 バイト
               4 個のディレクトリ  85,910,163,456 バイトの空き領域

 ドライブ C のボリューム ラベルは Windows10 です
 ボリューム シリアル番号は 7EEF-2850 です

 C:¥Users¥kobedenshi¥Documents のディレクトリ

2020/06/16  23:09    <DIR>          .
2020/06/16  23:09    <DIR>          ..
2020/06/16  23:09    <DIR>          Applications
               1 個のファイル               5,016 バイト
               3 個のディレクトリ  85,910,159,360 バイトの空き領域

 ドライブ C のボリューム ラベルは Windows10 です
 ボリューム シリアル番号は 7EEF-2850 です

 C:¥Users¥kobedenshi¥Music のディレクトリ

2020/06/13  17:42    <DIR>          .
2020/06/13  17:42    <DIR>          ..
               0 個のファイル                   0 バイト
               2 個のディレクトリ  85,910,159,360 バイトの空き領域

コマンド実行時のエラーを保存する

コマンドを実行したときエラーが出て、コマンドが正しく終了しないと標準エラー出力を通してウインドウにエラーが表示されます。標準出力をテキストファイルに保存するのと同様に、標準エラー出力をテキストファイルに保存、またはアペンドを使用して追加保存します。

標準出力を切り替えるには「>」記号を使いましたが、標準エラー出力は単に「>」記号を使っても標準出力が保存されるだけで、エラーメッセージは表示されません。標準エラー出力を保存するには以下のように記述する必要があります。

書式:コマンド 2> ファイル名

リダイレクト記号の前に「2」という数字がついているのが分かります。この数字をファイルハンドルと言います。標準入力、標準出力、標準エラー出力にはこのファイルハンドルが設定されていて、リダイレクト記号につけることで特定のデータストリームだけをリダイレクトすることができるようになります。ファイルハンドルの種類は以下の通りです。

  • 0 stdin 標準入力
  • 1 stdout 標準出力
  • 2 stderr 標準エラー出力

このファイルハンドルを使用すると標準エラー出力であるエラーメッセージもテキストファイルに保存することができます。

> DIR document 2> dir-err.txt

この場合、リダイレクトを使用しないとウインドウに「ファイルが見つかりません」とエラーが表示されますが、エラー出力をファイルハンドルで指定して、dir-err.txtにリダイレクトしているためにウインドウには何も表示されず、エラーメッセージはdir-err.txtに保存されます。

では、その場合、標準出力はどうなっているのでしょうか?

上記のコマンドでは標準エラー出力のみをリダイレクトしているため、標準出力である「ドライブC〜」のメッセージは保存されません。それでは標準出力と標準エラーメッセージを同じファイルに保存するにはどうすればいいのでしょうか?
答えは以下の通りに記述します。

> DIR document > dir.txt 2>&1

最後のファイルハンドル操作で標準エラー出力と標準出力を結合しているのです。「>&」は複数のデータストリームを結合することができます。上記のコマンドの実行結果は以下の通りとなります。

 ドライブ C のボリューム ラベルは Windows10 です
 ボリューム シリアル番号は 7EEF-2850 です

 C:¥Users¥uotaa のディレクトリ
ファイルが見つかりません

通常のDIRの出力と「ファイルが見つかりません」というエラー出力が両方とも保存されていますね。

14.ワイルドカードとは

コマンドラインでファイル名を指定する際には、ワイルドカードという代替え文字を利用することができます。ワイルドカードは、同じようなファイル名を一括して指定できる便利な機能です。

ワイルドカードは「*」や「?」という2つの記号を指し、複数のファイルなどまとめて指定する際に使用します。

  • 「?(クエスチョン)」……任意の一文字(0文字、または1文字)を代替
  • 「*(アスタリスク)」……任意の複数文字(0から任意の文字数)を代替

「?」記号は任意の0文字〜1文字を代替するので、例えば次のようなDIR test?.txtというコマンドを実行すると、先頭にtest最後に.txt間に0または1文字のファイル名が適合しますね。DIR test??.txtの場合、先頭にtest、最後に.txt、間に0または2文字のファイル名が適合しますね。

つまり、ワイルドカードを使用する事によって複数のファイルに対する条件のようなものを指定することができます。また、ファイル名に適合することを「マッチ」するというので、覚えておいてください。

> DIR test?.txt

上記のコマンド場合、カレントディレクトリからファイルの名の最初がtest、最後が.txtで間に0文字または1文字が入るファイルのみ表示する事になります。実際にマッチするファイル名の例を挙げてみると以下のようになります。

  • test.txt  (間の1文字が0文字の場合)
  • test1.txt  (間の1文字が”1″の場合)
  • text2.txt  (間の1文字が”2″の場合)
  • test!.txt  (間の1文字は記号でも構わない)
> DIR test??.txt
  • test.txt
  • test1.txt
  • text02.txt
  • test_1.txt

など、「?」を2つ続けて入力すると0文字から2文字分の文字を代替します。最初がtestで最後が.txt、間に0,1,2文字入るという条件になります。

次に「*」は0文字または何文字でも代替します。例えば次のようなコマンドを入力すると

> DIR *.txt

最初は何文字かわからないが、最後は.txtが入ってるファイル名となり、拡張子.txtを持ったテキストファイルのみ表示するといったコマンドになります。

アスタリスクは共通のキーワードや拡張子を持ったファイル名を探すのによく使われます。上記のコマンドでマッチするファイル名は

  • SAMPLE.txt
  • schedule.txt
  • setuplog.txt

など、拡張子が.txtであれば、他の部分は0文字から何文字でも良いので、大抵のファイル名でマッチします。

さらに「*」記号をファイル名の中間に指定すると、前後に任意の文字列を持つファイルを指定することができますし、例えばDIR *set*を実行するとファイル名のどこかに「set」という文字があるファイルを表示することができます。

ただし「*」+「数字」というパターンで使用する場合は、ロングファイルネームだけでなくショートファイルネームも検索が行われます。例えば「DIR *1.txt」のように指定すると「abcdef1.txt」がマッチするだけでなく、「shuwas~1.txt」といったショートファイルメームもマッチしてしまいます。これは「」+「数字」+「」のパターンでも同様のことが起こります。

ショートファイルネームとは

普段Windowsで使用しているファイル名の命名規則を「ロングファイルネーム」といいます。ロングファイルネームのルールとしては

  • 250文字までのファイル名
  • ドライブ名やディレクトリ名を含むパス全体で259文字
  • ¥ , / , : , *, ? , ” , < , > , ¥ などの記号はファイル名に含められない
  • ファイル名の最初に . をつけたファイル名は不可
  • 大文字、小文字の区別はしない

などのルールがあります。

これに対してもう一つの命名規則で「ショートファイルネーム」があります。ショートファイルネームはMS-DOS時代の名残で、Windowsでロングファイルネームが使用された時、自動的にシステムが生成する名前です。そのルールとして、

  • 半角英数字8文字 . 拡張子3文字

俗に8 + 3形式と呼ばれるファイル名の形式になります。

13.【MOVE】ファイルを移動する

MOVEコマンドはファイルを移動します。エクスプローラーではファイルアイコンをドラッグ&ドロップして別のフォルダに移動。または、ファイルを右クリックして「切り取り」、別のフォルダに移動して「貼り付け」するのも結果的にMOVEと同じになります。

また、MOVEはファイルを同一のディレクトリに「移動」し、移動とは別の目的に使用もします。それではMOVEコマンドの書式を見てみましょう。

書式:MOVE [スイッチ] 移動元ファイル 移動先ディレクトリ
> MOVE Documents¥mv-text.txt Documents¥Application

スイッチ一覧

オプションの種類機能
/y移動先にある同名ファイルを上書きするかどうかのメッセージを表示しない。
/-y移動先にある同名ファイルを上書きするかどうかのメッセージを表示する。初期値は「/-y」。これらは環境変数COPYCMDに設定可能

スイッチは2種類というより、/yの1種類です。スイッチがない場合は/-yのスイッチが付いているものとして認識されます。また/yが付いていると上書きをしてもいいかどうかの確認をしなくなりますので、バッチファイルなどの自動実行でもない限りな使わない方がいいでしょう。

次のオプションは「移動元ファイル」です。MOVEはファイルを移動するためのコマンドなので基本は移動したいファイルを指定します。カレントにないファイルを指定する場合は移動元ファイルの前にパスを指定しましょう。

最後に「移動先ディレクトリ」を指定しましょう。当然ですが移動先ディレクトリの場所にファイルをしてすることはできません。またカレントにない場合は、パスを指定します。

> MOVE mv-text.txt Documents

上記のコマンドはカレントにあるmv-text.txtをDocumentsディレクトリに移動します。ちなみに移動先ディレクトリがカレントディレクトリでしたら省略が可能です。

> MOVE Document¥mv-text.txt (省略)

この場合は移動先ディレクトリが省略されていますので、Documentsディレクトリにあるmv-text.txtがカレントディレクトリに移動されます。

では、移動元ファイルにディレクトリを指定するとどうなるでしょう?

> MOVE Document¥mv-directory Application

移動元ファイルを指定するところにmv-directoryというディレクトリを指定しました。この場合mv-directoryの中にあるディレクトリやファイルごとApplicationに移動してくれます。

ファイル名を変更する

コマンドプロンプトにはファイル名を変更するための「REN,RENAME」というコマンドが用意されていますが、MOVEコマンドを使用してもファイル名の変更はできます。

書式:MOVE 変更元ファイル名(またはディレクトリ名) 変更先ファイル名(またはディレクトリ名)

他のOSなどのコマンドライン環境を使用することを考えてもMOVEコマンドでの名称変更の方法は知っておいた方がいいでしょう。

MOVEコマンド使い方は「移動元ファイル」を「変更元ファイル名」に、「移動先ディレクトリ」を「変更先ファイル名」にします。「移動元ファイル」を「変更元ディレクトリ名」、「変更先ファイル名」を「変更先ディレクトリ名」とすることでファイルだけでなくディレクトリ名も変更できます。

もちろんMOVE本来の「ファイルを移動する」機能は有効なので、パスを記述すると、ファイルを移動するのと同時にファイル名を変更することもできます。

【RD,RMDIR】ディレクトリを削除する

12.【RD,RMDIR】ディレクトリを削除する

MDではディレクトリを作成しました。中にはディレクトリ名やパスを間違えて作ってしまい、エクスプローラーから削除した人はいないでしょうか?

もちろん、コマンドプロンプトでもディレクトリやファイルを削除することができます。
今回はディレクトリを削除する(ファイルを削除するコマンドは別にあります。)ためのコマンドRD(またはRMDIR)について勉強していきましょう。

RDはディレクトリを削除するコマンドです。コマンドプロンプトでのディレクトリやファイルの削除はWindowsと違って、ごみ箱といった特殊なフォルダに一時的に保存されることもありません。コマンドを実行するといきなり消えてしまい、あらかじめ準備をしていない限り、元の通りディレクトリを復活させるのは難しいので、注意が必要です。

それでは、まずRDコマンドの書式を確認しておきましょう。

書式:RD [スイッチ] [パス名]削除したいディレクトリ名

コマンド名は RDです。最低限必要なオプションとして「削除したいディレクトリ名」があります。とうぜんですが、この削除したいディレクトリ名はPCに実在しているディレクトリ名を指定します。また、パスをつけることでカレントディレクトリ以外に保存されているディレクトリを削除することもできます。

スイッチ一覧

オプションの種類機能
/s指定したディレクトリとそのサブディレクトリを、その中のファイルも含めて全て削除する。
/q「/s」オプションでディレクトリツリーを削除する際、確認メッセージを表示せずに削除する。主にバッチファイル(コマンドプロンプトで使用するプログラムファイル)内で利用する。

では、実際に使用してみましょう。まずRDを使うためには削除したいディレクトリが必要ですから、11.【MD,MKDIR】ディレクトリを作成するで勉強したMDコマンドを使用して削除用ディレクトリを作成しましょう。

今回はまず、コマンドプロンプトの練習用ディレクトリ「Application」をホームディレクトリに作成しました。

まずはMDコマンドでカレントディレクトリに「Application」を作成します。作成出来たら必ずDIRコマンドを使ってApplicationディレクトリが作成されているか確認しましょう。

MDコマンドでApplicationディレクトリを作成。DIRで実際にできているか確認
>md Application
>dir
rdディレクトリ作成後、dirで確認

ディレクトリが確認出来たらカレントディレクトリを「Application」に移動させます。

>cd Application

「Application」に削除用ディレクトリ「rdtest」を作成します。もちろんDIRでディレクトリが作成されたか確認します。

>md rdtest

これで準備は整いました。では早速作ったばかりの「rdtest」を削除してみましょう。コマンド名を指定して、削除したいディレクトリ名(今回はカレントディレクトリにあるのでそのまま指定)を指定。エンターで実行されます。

>rd rdtest

実行した後はDIRコマンドで一覧を表示させて、本当に削除されているか確認しましょう。

>dir
rdでrdtestを削除。dirで確認

これで、確かにディレクトリが削除されました。今削除した「rdtest」はどこを探しても出てきません。つまりWindowsでの操作のように、「ごみ箱」などどこかに移動されているわけでなく、本当に削除されているのです。

残念なRDコマンド

RDコマンドはスイッチを設定しない限り、空のディレクトリしか削除できません。例えば先ほどのrdtestに他のディレクトリやファイルが保存されていれば、それだけで削除できなくなってしまします。とても残念な仕様となっています。

解決方法は先に中のディレクトリやファイルを削除して、空にしてから削除するか、/sスイッチをつけて、中のディレクトリやファイルごと削除してしまいます。

最初の空にする解決方法は面倒すぎるので問題外として、後の中身ごと削除する方法は要注意です。Windowsでディレクトリを削除する場合、中が必要なければ特に注意を払うこともなく削除できると思います。これはいつでも元に戻せるからです。

RDで削除したディレクトリやファイルはもう戻っては来ません。誤って必要なファイルを削除してしまっても「後の祭り」なのです。

スイッチを使って空ではないディレクトリを削除する

「Application」ディレクトリに「rdtest」を再度作成しましょう。ヒストリー機能を使用すると簡単に作成できますし、先ほどの作業を思い出しながら作っていただくのもいいでしょう。

次にrdtestディレクトリ内にrdtext.txtを作成します。これにはメモ帳などでダミーファイルを作ってもよいのですが、今回はコマンドプロンプトの機能、「リダイレクト」機能を使って作ります。

>dir /s > rdtest\rdtext.txt

と入力して実行します。途中にある「>」記号は半角英数の「大なり」記号です。こう書くことによって、本来DIRの処理結果は画面に出力されるのですが、リダイレクト機能のおかげで、rdtestディレクトリ内にrdtext.txtという名前で保存されます。コマンドを実行したらDIRでファイルが出来たか確認をしておきましょう。

これでrdtestディレクトリには中身ができました。一応、スイッチなしでrdtestを削除しようとしてみましょう。

>rd rdtest

そうすると、「ディレクトリが空ではありません」と怒られてしまいます。そこで、/s湿地をつけてRDコマンドを実行します。

>rd /s rdtest

実行すると「rdtest、よろしいですか(Y/N)?」と聞かれますので、削除する時は「Y」を、削除しない時は「N」を入力し、エンターキーを押します。削除後、いつものように削除されているかDIRで確認します。

「Y」と答えた後、特になにもレスポンスがありません。コマンドプロンプトは正常に処理が終わったときはレスポンスを返さないのが普通です。・・・慣れましょう。
DIRコマンドで確認すると、確かに削除されています。

おまけ

今回はRDコマンドを勉強しました。スイッチのないRDコマンドは間違えて空ディレクトリを作ってしまった時くらいしか使い道のないコマンドでした。/sスイッチをつけると、中に何が入っていても削除してしまう困ったコマンドになっていました。
RDコマンドを使用する場合はパスやスイッチをしっかり確認してから実行するくらい慎重にしたほうがいいでしょう。