4. ファイル操作関係

<前章までの状態>
D:ドライブに test ディレクトリがあります。
D:\test ディレクトリの中に以下のものがあります。
ファイル test.txt
|
D:\test
└ test.txt
|
4−1 コピー( COPY )
test.txt の複製を作ります。カレントディレクトリの中でおさまる処理であれば、
パス名 (この場合は D:\test のこと) なしのファイル名だけでOKです。
(もちろん、付けても構いません)
異なるディレクトリにあるファイルを処理する場合は、ファイル名の前のパス名も必ず指定します。
COPY 複製元ファイル名 出力ファイル名
DIR /B (ファイル名だけを一覧表示)
D:\test>copy test.txt test2.txt
1 個のファイルをコピーしました。
D:\test>copy test.txt test3.txt
1 個のファイルをコピーしました。
D:\test>dir /b
test.txt
test2.txt ← ファイルが増えました
test3.txt
D:\test>
|
testディレクトリの下に renshuディレクトリを作り、そこに
test.txt の複製を作ります。
MD ディレクトリ名
COPY 複製元ファイル名 コピー先ディレクトリ名
D:\test>md renshu
← D:\test\renshu が作成されました
D:\test>copy test.txt renshu
1 個のファイルをコピーしました。
D:\test>
|
コピー先に同名のファイルがすでに存在している場合は、上書きしていいかどうか
確認メッセージが出ます。すでに test.txt がある D:\test\renshu に、
もう一度 test.txt をコピーしようとしてみます。
D:\test>copy test.txt renshu
renshu\test.txt を上書きしますか? (Yes/No/All): n
0 個のファイルをコピーしました。 ↑
実行をキャンセルしました
D:\test>
|
renshuディレクトリに、testディレクトリのファイルをすべてコピーします。
ファイル名にワイルドカード
を使うことによって、一度に複数のファイルを指定することが可能です。
COPY * コピー先ディレクトリ名 ( * はすべてのファイルを意味する )
D:\test>copy * renshu
test.txt
renshu\test.txt を上書きしますか? (Yes/No/All): y ←Yesを選択
test2.txt
test3.txt
3 個のファイルをコピーしました。
D:\test>
|
4−2 削除( DEL )
D:\test ディレクトリにあるファイル test.txt をディスク上から削除します。
WindowsのGUIと違い、ファイルは "ごみ箱" へいくわけではありません。
ファイルは即座になくなってしまうので、誤って別のファイルを削除してしまわぬよう
慎重に試して下さい。
DEL 削除ファイル名
または
ERASE 削除ファイル名
D:\test>del test.txt
← エラーなく削除されました
D:\test>
|
ファイル名にはワイルドカードが使えます。ワイルドカードを正しく記述できれば、
ディレクトリの中に膨大なファイル数があっても、そのうちの一部のファイルだけ一気に
削除することも可能です。
D:\test>del *.txt
← エラーなく削除されました
D:\test>dir /b *.txt
ファイルが見つかりません ← 削除されたのでファイルはありません
D:\test>
|
DEL * (ディレクトリ内のすべてのファイルを削除)
を指定した時に限っては、念のため確認メッセージが出されます。
D:\test>del *
D:\test\*、よろしいですか (Y/N)? n
↑
D:\test> 実行をキャンセルしました
|
この処理では、ディレクトリは削除されません。今回の例でいえば、renshuディレクトリは
削除されずに残ります。
ディレクトリを削除するには RMDIR という別のコマンドが用意されています。
4−3 移動( MOVE )
上記の COPY コマンドを MOVE に置き換えるとファイルの移動となります。
つまり、コピー元のディレクトリにはファイルが残りません。
D:\test\renshu のファイルをすべて D:\test へ移しましょう。
MOVE 移動元ファイル名 移動先ディレクトリ名
D:\test>cd renshu ← カレントディレクトリを変更
D:\test\renshu>move * ..
D:\test\renshu\test.txt
D:\test\renshu\test2.txt ← 移動中...
D:\test\renshu\test3.txt
D:\test\renshu>dir /b
← ファイルは残っていません
D:\test\renshu>dir /b .. ← では、親ディレクトリには?
renshu
test.txt
test2.txt ← ファイルが移りました
test3.txt
D:\test\renshu>
|
上記 move * .. は、
「カレントディレクトリの全てのファイル ( * ) 」を
「ひとつ上のディレクトリ ( .. ) 」に移動するという命令です。
カレントディレクトリを renshu に変更しなくても同じ処理は可能です。
D:\test はカレントディレクトリなので、略号 . で表現できます。
D:\test>move renshu\* . ← カレントディレクトリへ移動
D:\test\renshu\test.txt
D:\test\renshu\test2.txt ← 移動中...
D:\test\renshu\test3.txt
D:\test>
|
4−4 ファイル名・ディレクトリ名変更 ( RENAME )
ファイル名の変更とディレクトリ名の変更は、同じコマンドで行います。
( MS-DOS の時代には、ディレクトリ名を変更するには別のコマンド RENDIR
を使っていました。)
ファイル test.txt の拡張子
.txt を、 .doc に変更します。
RENAME 旧ファイル名 新ファイル名
または
REN 旧ファイル名 新ファイル名
D:\test>ren test.txt test.doc
← エラーなく終了しました
D:\test>ren test2.txt test2.doc
← エラーなく終了しました
D:\test>dir /b
renshu
test.doc ← 拡張子が変わりました
test2.doc ← 拡張子が変わりました
test3.txt
D:\test>
|
ワイルドカードを使って、複数のファイルの名前を一気に変更することも可能です。
下の例では、拡張子 .doc のファイルの拡張子を全て .txt に戻します。
D:\test>ren *.doc *.txt
← エラーなく終了しました
D:\test>dir /b
renshu
test.txt
test2.txt ← 拡張子が txt に戻りました
test3.txt
D:\test>
|
ファイル名の一括変更は、GUI環境では専用のツールを別途用意する以外にあり
ませんが、DOS窓を使うと、基本のシステムだけで可能です。DOSコマンドと
ワイルドカードの組み合わせが便利な時もあるものです。
|