Script > DOSコマンド

http://write.asahi.ne.jp/modules/xfsection/article.php?articleid=2 ■フォルダ内のファイル一覧をテキストファイルに出力する方法 コマンドプロンプトから以下のように入力します。

ファイルの一覧がCドライブの直下にlist.txtというファイル名で保存されます。

c:\Windows\dir/B > c:\list.txt

このようにコマンドを実行するフォルダを指定すると、そのフォルダのファイル一覧が保存されます。 ※フォルダを指定しないとカレントになります。

例えば、c:\donloadフォルダにあるMPEGファイルのファイル一覧をc:\list.txtに保存する場合は、以下のようになります。

c:\download\dir/B *.mpg > c:\list.txt

これらの方法では、c:\list.txtが存在すると、エラーになってしまいます。 新規にファイル一覧を作りたい場合は、list.txtというファイルを削除してから実行してください。 既に存在するファイル一覧に実行結果を追加するには、「>」の部分を「>>」に変えます。

c:\download\dir/B *.avi >> c:\list.txt

以下のように2つの拡張子を一緒にファイル一覧にすることもできます。

c:\download\dir/B *.avi *.mpg >> c:\list.txt

このままではファイル名順に並んでしまい、拡張子毎になりません。 拡張子毎に並べるには、以下のように/OEオプションを追加します。

c:\download\dir/B/OE *.avi *.mpg > c:\list.txt




■ファイルを下階層のフォルダも含めて探してファイル一覧を保存する方法

 コマンドプロンプトから以下のように入力します。

 for /R %i in (*.csv) do echo %i > list.txt

 「*.csv」のところを、「neko.gif」にしてc:\からこのコマンドを実行すれば、  Cドライブ配下のフォルダ全部からneko.gifを探せます。

 for /R %i in (neko.gif) do echo %i > list.txt


■ファイルを探すバッチファイルを作る方法

 前回、for命令を使ってファイルを下階層まで探すコマンドを作ったのですが、毎回長いコマンドを入力していては大変です。そこで、この記述をバッチファイルにして、自分だけのオリジナルコマンドを作りましょう。

 メモ帳で以下の通り入力します。  ファイル名の変わりに「%*」を指定しているのは、コマンドライン引数の全てを受け取る為です。コマンドライン引数(パラメータ)を受け取るには、%1で1番目の引数、%2で2番目の引数、%*で全ての引数を受け取ります。

 @echo off  for /R i in (%*) do echo i

 windowsフォルダ(c:\windowsやc:\winntなど)に、ffind.batというファイル名で保存します。windowsフォルダに作ったバッチファイルは、どこでもこのコマンドを呼び出せるようにするのに手っ取り早い方法です。

 作成したffindコマンドを使ってみましょう。以下のようにコマンドプロンプトで入力して使います。gifファイルとpngファイルを検索してみます。

 ffind *.gif *.png

 gifファイルの検索結果をファイル(kekka.txt)に保存するには、以下のように入力します。

 ffind *.gif > kekka.txt

 検索したいファイル名は、自由に指定できます。

 ffind *.png > pnglist.txt


■ファイルを結合する方法

 ファイルを結合するには、以下のように入力します。  a.txtとb.txtの内容を結合して、c.txtにします。

 copy a.txt+b.txt c.txt

 バイナリファイルを結合するには、/Bオプションをファイル名の後につけます。

 copy a.txt/B+b.txt/B c.txt

 バイナリファイルとテキストファイルを結合するには、バイナリファイルは/Bを、テキストファイルには/Aをファイル名の後につけます。

 copy a.txt/B+b.txt.B+c.txt/A d.txt

 テキストファイルのコピー方法はもう1つあります。以下のように入力します。

 type a.txt b.txt > c.txt

 typeを使った方法では、直接与えた文字も結合して出力できる点で便利です。  例えば、2つのファイル(0201.logと0301.log)のそれぞれの内容の前にタイトルを付加して、all.txtに結合結果を出力できます。

 echo 2月1日ログ && type 0201.log && echo 3月1日ログ && type 0301.txt > all.log




■ファイル内の文字列を検索する方法(下階層フォルダも検索します)

 例えば「NEKOCHAN」という文字列が書いてあるテキストファイル(*.txt)を探すには、以下のコマンドを実行します。

 for /R %i in (*.txt) do findstr "NEKOCHAN" %i

 これをバッチファイルにして、いつでも使える便利コマンドにしてみましょう。  メモ帳で以下の通り入力し、Windowsフォルダ(c:\windowsやc:\winntなど)に、grep.batというファイル名で保存してください。

 @echo off  for /R i in (%2) do echo i && findstr /N %1 %%i

 今回作ったgrepコマンドは、例えば、gifファイルを使っているHTMLファイルを探す場合、以下のように実行します。  実行したフォルダ配下のすべてのHTMLファイルでgifという文字列が使われているか検査して、ファイル名とその一部の内容を表示します。

 grep "gif" *.html

 結果をファイルに保存するには、以下のようにコマンドを実行します。

 grep "gif" *.html > giflist.txt

 複雑な検索も正規表現で検索できます。

. ワイルドカード: 任意の文字

繰り返し: ゼロ個以上の直前の文字またはクラス

^ 行位置: 行頭 $ 行位置: 行末 [class] 文字クラス: セットの任意の 1 文字 [^class] 逆クラス: セット以外の任意の 1 文字 [x-y] 範囲: 指定した範囲の任意の文字 \x エスケープ: メタ文字 x のリテラル使用 \ xyz\> 単語位置: 単語の終わり

 例えば、「write001.gif」\「write100.gif」という、「write」の後が連番で、その後に拡張子のあるようなファイル名を記述しているHTMLファイルを見つける為には、以下のようにコマンドを実行します。

 grep "write[0-9][0-9][0-9].gif" *.html


■ドライブにフロッピーが入っているかどうか検査する方法

ドライブにフロッピーがささっているか否かを判断して処理を進める時に、「a:」や「copy test.txt a:\」や「cd a:\」とすると、「ドライブの準備ができていません」というエラーダイアログが表示されてしまいます。それを回避する方法を紹介します。

バッチファイルにして、いつでも使える便利コマンドにしてみましょう。 メモ帳で以下の通り入力し、Windowsフォルダ(c:\windowsやc:\winntなど)に、chkdrive.batというファイル名で保存してください。

@echo off chkdsk a: > NULL If ERRORLEVEL 1 (echo NG) ELSE (echo OK) pause

ドライブにフロッピーが入っている状態の時は「OK」を、フロッピーが入ってない時は「NG」を表示します。


■壊れたファイルを復旧する

 昔に使っていたフロッピーからファイルコピーしていると、「不良セクターです」というようなエラーで読み込めないファイルがあり、困ったことがありました。そういった場合に、以下のコマンドを使って復旧してみるという手があります。 Windowsの起動ドライブに対しては使えませんが、増設ドライブやMOでも可能なようです。

 recover a:\test.txt


■複数テキストファイルを印刷する方法

 テキストファイル(*.txt)を下階層まで探して印刷するには、以下のコマンドを実行します。

 for /R %i in (*.txt) do print %i


■ネットワークにつながっているPCを見つける方法

 相手のIPアドレスがわかっている場合は、以下のようにpingコマンドでIPアドレスを指定して実行します。

 ping 127.0.0.1

 相手の端末名がわかっている場合は、以下のようにpingコマンドで端末名を指定して実行します。(端末名がserverの場合)

 ping server


■IPアドレスから端末名を得る方法

 相手のIPアドレスがわかっている場合、相手の端末名を表示するには以下のコマンドを実行します (例のIPアドレス127.0.0.1は自分のPCです=localhost)

 nslookup 127.0.0.1


■端末名からIPアドレスを得る方法

 端末名からIPアドレスを取得することもできます。  (端末名がserverの場合)

 nslookup server


■ネットワーク上の端末一覧を作る方法

 ネットワーク上の端末一覧を作るには、以下のようにコマンドを実行します。

 net view > netlist.txt


■ネットワークカードの情報やマックアドレスを見る方法

 ネットワークカードの情報やマックアドレスを見るには、以下のようにコマンドを実行します。

 ipconfig /all


■ネットワーク上の相手マシンまでの経路を検索する方法

 相手マシン名がclientの場合、以下のようにコマンドを実行します。  経路までの速度をms(ミリセカンド)で表示されるので、通っているネットワーク上での遅い箇所を見つけることが出来ます。

 tracert client


■自分のPCのネットワーク利用状況を調べる方法

 自分のPCの端末名を表示するには、以下のコマンドを実行します。

 hostname

 自分のPCに接続しているユーザーを調べるには、以下のコマンドを実行します。

 net session

 自分のPCに接続しているユーザーを切断するには、以下のコマンドを実行します。  (接続されている端末名が、clientの場合)

 net session client /DELETE


■ネットワークに接続されているPCに登録されているユーザー名を見る方法

 ネットワークに接続されているPCに登録されているユーザー名を見るには、以下のコマンドを実行します。(端末名がclientの場合:IPアドレスでも構いません)

 nbtstat -a client


■ネットワーク上のコンピュータからファイルをコピーする方法 サーバーのC:\temp\testフォルダをローカルのC:\tempにコピーするには 以下のようにコマンドを実行します。 net use \\コンピュータ名\c$ パスワード /USER:ユーザー名 xcopy /Y /S \\コンピュータ名\c$\temp\test c:\temp


■ネットワークで利用されているプログラムを見つける方法 ネットワークで利用されているプログラムを見つけるには、netstatコマンド利用します。

  • anoオプションを指定することで、プロトコル、ローカルアドレスとポート番号、接続相手のアドレスとポート番号、 ステータス、プロセスIDが表示されます netstat -ano

■拡張子を一括で変更する方法

 拡張子を一括で変更するには、以下のコマンドを実行します。  (例では、mpegをmpgに変更しています)  ren *.mpeg *.mpg


■下階層フォルダまでフォルダの容量を一覧化する方法

 UNIX系OSでは、duという便利なコマンドがあります。同じような機能をコマンドプロンプトで実現してみます。メモ帳で以下の通り入力し、windowsフォルダ(c:\windowsやc:\winnt)に、du.batというファイル名で保存してください。 @echo off dir /s | findstr "のディレクトリ 個のファイル"

実行すると、フォルダ毎に容量が表示されます。


■ファイル属性を一括で変更する方法

 CD-ROM等からコピーしたファイルは、ReadOnly(読込専用)になっていて、書き換えができず、都度、ファイルのプロパティの属性で、読み取り専用のチェックを外すことになります。そんな時は、以下のコマンドで一気に読み取り専用チェックを外しましょう。(下階層フォルダ内のファイルも一括で変更されます) 特定のファイルや拡張子だけ変更できるように、バッチファイルにしてみましょう。 以下の内容をメモ帳で入力し、Windowsフォルダに、unreadlock.batというファイル名で保存します。 @echo off for /R i in (%*) do attrib -R i

unreadlockコマンドを実行すると、フォルダ配下のファイル及び、その下階層フォルダ内のファイルの読み取り専用チェックを一括で外します。


■フォルダを丸ごと削除する方法 フォルダを一気に削除するには、rmdirコマンドを使います。 下階層も全て確認なしで削除するには以下のようにパラメータを指定します。 ※キレイに消えてしまいますので注意してください。 rmdir /Q /S


■エディタなしでテキストファイルを作成する方法

エディタがない場合はnotepad.exeなどを使うこともよくありますが、ちょっとしたファイルであればコマンドだけで作れます。 「テストデータです。」という文字列をtest.txtという名前で保存してみましょう。 echo テストデータです。 > test.txt

テキストを複数行入力することもできます。 文字列の最後に「^」を付けると「More\」と表示されます。 そこで改行だけ入力します。 再度Mode\と表示されますので、続きのテキストを入力し、リダイレクト出力を指定します。 echo テストデータです。^ More\ (改行キーを押下する) More\ 続きですよ。 > test.txt

test.txtをエディタで開くと改行されています。 テストデータです。 続きですよ。

※改行コードはLFだけです。

以下の方法でファイルを作ることもできます。 この方法だと改行も簡単です。 copy con test.txt テストデータです。 続きですよ。 ^Z 1 個のファイルをコピーしました。




■バージョンを確認する方法 Windowsの簡易的なバージョン情報を表示するには、verコマンドを使います。 ver Microsoft Windows XP [Version 5.X.XXXX]

更に詳細な情報を知りたい場合は、winverコマンドを使います。 サービスパックのバージョンも表示されて便利です。 winver

もっと詳細な情報を知りたい場合は、「ファイル名を指定して実行」から MSINFO32を実行します。


■ODBCを登録する方法 ODBCConfというコマンドを使うとODBCへの登録などをコマンドラインから制御できます。 【パラメータの確認方法】 ODBCConf

【使用例】 odbcconf /Ld log.txt CONFIGSYSDSN "Microsoft Access Driver (*.mdb)" "DSN=mydata;DBQ=C:\Temp\mydata.mdb"


■補完機能を有効にする方法 補完機能は、Unixのbashのようにパスを入力する際に、Ctrl+Dを押すと     そのパスにあるフォルダ名を表示する機能です。     たとえば、「P」と入力した後、Ctrl+Dを押すと、Program Filesが表示される。 補完機能をONにするには、cmd.exeを起動する際、以下のようにオプション指定する。 cmd.exe /f:on

※[スタート]→[すべてのプログラム]→[アクセサリ]→コマンドプロンプトのプロパティの リンク先を%SystemRoot%\system32\cmd.exe /f:onに変えておくと便利。


■外字(EUDC)を差し替える方法 外字ファイル(EUDC)を別のファイルに差し替える際、GUIからの操作では 利用中で変更できないため、差し替えできない。(削除もできない) コマンドプロンプトで移動すれば、利用中のファイルであっても移動できる。 作業用フォルダを作り、移動しておけば、あとはGUIで操作できる。 mkdir c:\temp move c:\windows\fonts\eudc.* c:\temp

最終更新:2011年06月05日 11:47