● コマンドプロンプト(Windowsの標準機能)

目次
● コマンドプロンプト(Windowsの標準機能)
 §1 できること
 §2 使い方
 §3 メリット・デメリット
 §4 VBAやUWSCの中で、コマンドを実行する方法
※Shift+TABキー、もしくは、Homeキー、Homeキー+TAB数回、を押すと、目次付近に戻れます。

コマンドプロンプトは、パソコンを文字(1行プログラム)で操作できるようにしたものです。
1行プログラムは「コマンド(命令)」や「引数(ひきすう)」「オプション(詳細動作指示)」などからなります。

例えば以下の1行プログラム(赤文字の行)は、「Cドライブにあるtest.txtというファイルをDドライブにコピーする」という例ですが・・・、

Xcopy “C:\test.txt” “D:\” /d /e /y /h /r /c

このとき、「Xcopy」が「コマンド」で、「“C:\test.txt”」と「“D:\”」が「引数」、そして、「/d /e /y /h /r /c」が「オプション」、となります。

※「引数」「オプション」についての詳しいご説明はのちほど。とりあえず、引数には、数値だけではなく、それ以外の文字や変数も指定できます。

コマンドプロンプトはメンテナンスなどに使うことが多いです。
また、1行プログラムを集めて、簡易的で少し長いプログラムも作れます。その意味からすれば、コマンドプロンプトは言ってみれば、一種のプログラミング言語のようなものです。

※1行プログラムを集めたものを「バッチファイル(後述)」といいます。
  
  
§1 できること

・ファイルやフォルダの作成、開く、移動、削除、など
・ファイルの自動バックアップ(Xcopy)
・UNCパスにて他のパソコンの共有フォルダへコピー
・ディスクのフォーマット
・消しても消えないファイルの削除
・環境変数の取得
・日付付きファイル(世代)バックアップ
・ネットワークのチェック(ifconfig)
・ネットワークのチェック(Ping)
・自動ユーザーログイン(これを悪用すると不正侵入が可能です)
・ファイルやフォルダの一覧作成
・誰がどのファイルにアクセスしているかの調査
・複数のテキストファイルを1つに結合 などなど。

コマンドプロンプトと「タスク」の連携により、一定の時刻ごとに自動処理をさせることが可能です。

特に、バックアップに便利です。

(a)マイドキュメントの「フォルダA」の最新データのみをUSBメモリに上書きコピー
(b)マイドキュメントの「フォルダB」にある10個の最新のテキストファイル(例えば銀行提出用の自動引き落とし用データなど)をすべて結合した上で、USBメモリにコピー
(c)マイドキュメントのマイピクチャの最新データのみをUSBメモリにコピ ー
(d)デスクトップの「作業中」フォルダの最新データをファイル名に日付と作成時刻を自動的に含めて、USBメモリに世代コピー

といったような、細かい制御でのバックアップが可能です。

※コマンドプロンプトとは? → パソコンにはWindowsやMacのように、マウスでコマンドボタンやメニューをクリックして操作するタイプのものと、UNIXやLinuxサーバのように真っ黒な画面に「コマンド(命令)」を打ち込んで指示をし、それが「クリックしたことと同じ意味になる」、そういう操作をするパソコンがあります。
ただ、最近のパソコンではその両方ができものがほとんどです。もちろん、WndowsもMacもそうです。
また、コマンドプロンプトは後者の機能、つまり、「PCの一般操作のための命令群」ということになります。純粋なプログラミング言語ではありません。
なお、コマンドプロンプトは、Win98までは「MS-DOS」と呼ばれていました。
ちなみに、MacはLinuxベースなので「ターミナル」という機能がコマンドプロンプトと同じ機能に該当します。
  
  
§2 使い方

XPの場合であれば、スタートボタンから、「すべてのプログラム」「アクセサリ」「コマンドプロンプト」で使えるようになります。

†1 パソコンが外部と通信できているかどうか調べる

Ping 210.236.64.4 とか、
Ping www.yahoo.co.jp などと入力してEnter。

†2 パソコンがルーターまでと通信できているか調べる

ipconfigと入力してEnter

通信できていれば、大抵は192.168.×××.××× という数字が出てきます。ルーターを使っている場合、192から始まらない数字になった場合は、通信できていないことが多いです。

†3 任意のテキストファイルを結合

例えば、cドライブにあるone.txt 、two.txt 、 third.txt、の3つのファイルを結合して、all.txtというファイルを作成したい場合。

copy c:\one.txt+c:\two.txt+c:\third.txt c:\all.txt

†4 USBメモリに修正ファイル・新規ファイルのみをバックアップ。

xcopyコピー元データの場所(パスで) コピー先の場所(パスで)

例(USBメモリのドライブ名が「E」の場合)
xcopy ”c:\data\*.*” ”E:\data” /d /y /e /h /r /c

/dや/yなどは「オプション」と呼びます。これによって柔軟なコピーを実現することができます。今回はご紹介していませんが、他のコマンドにもオプションがあります。「補助コマンド」とでも覚えておいてください。

/d 更新されたファイルだけをコピーする。
/y 上書きするかどうかを聞かないで無条件にコピー。
/e フォルダ構造も丸ごとコピー。
/h システムファイルも無条件にコピー。(フリーウェアの入ったフォルダなどをコピーする時に必要)
/r 読み取り専用ファイルも無条件にコピー
/c 破損しているファイルがあってもコピーを中断しない。

※ドラッグのコピーやフリーウェアのコピーだと、もし破損ファイルがあった場合、そこでエラーになって中断してしまうことが多いのですが、コマンドプロンプトで /Cオプションを使うと中断しません。確実です。

※この例では、Cドライブの「Data」フォルダを丸ごとUSBメモリの「Data」フォルダに上書きコピーします。(修正・新規ファイルのみ)

※「*.*」は「すべてのファイル」、という意味です。

※たったの1行書くだけででこれだけ細かいコピーができます。

※ドラッグをしないため、間違ったフォルダにドラッグしてコピーし間違う、あるいは、コピーしそ損なう、といったトラブルがまずありません。

※上書きも自動なので誤って上書きすることがありません。

※「”」でパスを囲むのは、スペースを含むフォルダをコピーしたい場合にエラーにならないようにするためです。(スペースを含むフォルダをコピーしたい場合は、パスを「”」で囲まないとエラーなってコピーができません。)

※大文字と小文字は区別されません。

※スペースがある・ない、は区別されます。

†5 LANで繋がっているパソコンにデータをコピー(バックアップ)

xcopy ”c:\data\*.*” ”\\コピー先のパソコン名¥共有フォルダ名” オプション

例えば、CドライブのDataフォルダを、LANでつながっている「PC02」というパソコンの「予備」という共有フォルダの「Data」というフォルダにコピーしたい場合、以下のようになります。

xcopy “c:\data\*.*” ”\\PC02¥予備\data” /d /y /e /h /r /c

†6 LANでつながっているパソコンにログインする

安易なパスワードだと、これで侵入される可能性も無いではないです。

net use \\パソコン名\共有フォルダ名 パスワード /user:ユーザー名

†7 ファイルやフォルダの一覧作成

dir一覧表示したいフォルダのパス

例えばCドライブの「music」フォルダの中ファイル名を一覧表示させる場合は、以下のような1行プログラムになります。

dir c:\music

そのほか、ファイル名をテキストファイルに一括書き出しすることもできます。(あらかじめ、曲名がファイル名になっていなければなりませんが)例えばCドライブの「music」フォルダの中に、100曲くらい曲があった場合、その曲目リストを作りたいときは、次のようにすると曲名が自動的に作成できます。

dir C:\music\*.* > c:\music_list.txt /b

※「>」はパイプ、といって、出力先を変更したいときに使います。
何も指定しないと、結果の出力先はモニタとなりますが、このようにパイプを使ってファイルを指定すると、そのファイルに実行結果を出力(この場合は書き込み)をしてくれます。
※「/b」は「ファイル名のみを表示する」という意味です。

この例では、曲名をCドライブに、「music_list.txt」というテキストファイルを自動的に作って、その中にリストアップしてくれます。

もちろん、一つ一つファイル名をコピー&ペーストしてリストを作成してもよいのですが、少しでも早く終わらせたい時や、量が多い場合は、このコマンドを使います。

リストアップされたものをそのままExcelに貼り付ければ、並べ替えも自由に行えます。
  
  
§3 メリット・デメリット

★メリット
・パソコンを文字で操作できるので、コマンドや構文を覚えてしまえば、クリックで操作するよりもスピーディに操作できる場合があります。
例えば、コントロールパネルで行うような設定を、コントロールパネルでやらなくても、(コマンドプロンプトにて)文字入力でできるので、そういうときは便利です。
特にネットワーク管理やユーザー管理などでは便利です。
「あの設定、どこからクリックしてどう画面を出して設定するんだっけ?」ということが無いのでラクちん。
また、すべてのコマンドを覚えなくても、リファレンス(辞書的な書籍)があれば、それを見ればOK。
・かなり色んなことができるので、パソコンのことがよくわかってくる。
・「黒い画面にコマンドを入力し、結果を見る」、という操作の繰り返しなので、操作が単純化されており、意外とわかりやすい。
・そのため、パソコンの現在の状態を知るのに便利。
・バックアップには本当に便利、など。

★デメリット
・キーボードがある程度熟練していないと入力が面倒だし、活用が難しい。
・ファイル操作をしたい場合は、バックアップ以外はマウスを使ったほうがラク。
・一応、多少のコマンドを覚えなくてはならない。
(主要なものだけで良いですが)
・最初だけ、どのコマンドがどういう動作をするか、一応、体験、学ばねばならない。
・バックアップには本当に便利ですが、裏を返すと、一般の方には、バックアップくらいにしか使えないです。
組み立てパソコンをする方々やPCメンテやネットワークメンテなどをを自分で行う方なら、いろんな事に使えて便利なのですが・・・

など。

§4 VBAやUWSCの中で、コマンドを実行する方法

例1:VBAの場合(Excel、Access、Word、すべて)

’c:\order01\ フォルダのすべてのファイルをd:\order01 フォルダにコピー
Call Shell("xcopy c:\order01\*.* d:\order01 /s /e /d /y /c /h /r", 1)

※ファイルパスの中で「"(ダブルクォーテーション)」を使う場合は、コマンドに使う「"」の箇所だけを「""""」("を4つ)に書き換えます。(最初と最後の「"」は書き換えません。)
なお、ファイルパスの中で「"」を使う場面は、例えば「order 01」のようにフォルダ名にスペースが含まれる場合です。
例えば
xcopy "c:\order 01\*.*" "d:\order 01" /s /e /d /y /c /h /r
というコマンドをVBAで直接実行させたい場合は、
Call Shell("xcopy """"c:\order 01\*.*"""" """"d:\order 01"""" /s /e /d /y /c /h /r")
となります。 d:\order01 /s /e /d /y /c /h /r

例2:UWSCの場合

// 同じく c:\order01\ フォルダのすべてのファイルをd:\order01 フォルダにコピー
DosCmd("xcopy c:\order01\*.* d:\order01 /s /e /d /y /c /h /r")

※ファイルパスの中で「"」を使う場合は「"」の箇所だけを「<#DBL>」に書き換えます。