ラベル コマンドプロンプト画面 の投稿を表示しています。 すべての投稿を表示
ラベル コマンドプロンプト画面 の投稿を表示しています。 すべての投稿を表示

2017年3月12日日曜日

Windowsコマンド(バッチファイル)で、自分で設定した環境変数を削除する方法(Windowsコマンド)

間違った名前の環境変数を設定してしまった時は、SETコマンドで削除する事が出来ます。

但し、削除が有効なのは、今開いているウィンドウだけです。
システム全体から特定の環境変数を削除する場合は、システムの詳細設定から登録されている環境変数を確認する必要があります。


**** 書式 :
SET (削除したい環境変数)=

**** 例:
(環境変数 NEGI を削除したい時)
SET NEGI=


**** メモ:
変数が削除された事を確認する時も、set コマンドを使います。

set NEGI
環境変数 NEGI が定義されていません

set
(現在設定されている環境変数の一覧が表示されます。)


**** 確認したバージョン
Windows 10


==
関連ページ:
    ▼Windowsコマンド。制御文と環境変数(▼ABC順)
    ▼Windowsコマンド一覧(▼ABC順)
    ▼コマンドプロンプト画面
    ▼制作メモ

2017年2月5日日曜日

Windows 10。スタートボタンの特殊メニューからコマンドプロンプト画面を表示する方法 - Windows

Windows 10の場合、コマンドプロンプト画面は、スタートボタンの特殊メニューから起動する事が出来ます。


**** 手順
(Windows 10の場合)
画面左下にあるWindowsのマークを右クリックして、
出てくる選択肢から次のどちらかを選択します。

コマンドプロンプト(C)
もしくは、
コマンドプロンプト(管理者)(A)


**** メモ
Windowsキー+X でも同じ事が出来ます。


**** 確認したバージョン
Windows 10


==
関連ページ:
    ▼画面操作とカスタマイズ
    ▼コマンドプロンプト画面の使い方
    ▼コマンドプロンプト画面
    ▼制作メモ

コマンドプロンプト画面をエクスプローラーから直接開く方法 - Windows

コマンドプロンプト画面は、Windowsのエクスプローラーから直接開く事が出来ます。
この時、カレントディレクトリは、今表示中、もしくは選択中のフォルダーになりますので、作業したい特に便利です。


**** 手順
カレントディレクトリに設定したいフォルダーを開いて、
Shiftキー +右クリック。
選択肢が出てきますので「コマンドウィンドウをここで開く(W)」


**** メモ
フォルダーを選択していると、そのフォルダーをカレントディレクトリに設定します。
フォルダーを選択していない場合は、今居る場所をカレントディレクトリに設定します。


**** 確認したバージョン
Windows Vista SP2
Winmdows 7 SP1
Windows 10


==
関連ページ:
    ▼画面操作とカスタマイズ
    ▼コマンドプロンプト画面の使い方
    ▼コマンドプロンプト画面
    ▼制作メモ

2012年7月12日木曜日

変数 %1 = バッチファイルやCALL文の最初の引数 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。プログラム実行関連 ▲
○Windows XP
実行中のバッチファイルを呼び出した時の、最初の引数が入っています。
但し、例外もあります。

o CALLコマンドでラベルの内容を実行している間は、CALLコマンドで指定した最初の引数が入ります。
o SHIFT コマンドを使用すると、最初の引数以外を取得する事が出来ます。
    + 詳しくは、「SHIFT = 引数(= %1など)の位置を1つずらす」


**** 書式
--------
%1
--------



**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o (設定なし) = この機能は、ERRORLEVELの値を更新しません。


**** 使用例
-------- ミクさん.bat
@echo off
echo %1だよ。
--------


o 実行コマンド
--------
ミクさん.bat ミク
--------



**** 機能
o 通常は、実行中のバッチファイルを呼び出した時の、最初の引数が入っています。
o 但し、例外もあります。
    + CALLコマンドでラベルの内容を実行している間は、CALLコマンドで指定した最初の引数が入ります。
    + SHIFT コマンドを使用すると、最初の引数以外を(位置をずらして)取得する事が出来ます。
o %と1の間にキーワードを入れると、変数の取り出し方を変える事が出来ます。
    + 詳しくは、「%変数の使い方」


**** メモ
o %1 では正しくファイル名を受け取れないパターンがありますので、注意します。
    + バッチファイルにファイルをドロップして起動する時で、
    + かつ、%1 に入るべきファイル名の中に、全角空白が1つ以上混じっていて、半角空白が全く入っていない場合


**** 確認したバージョン
o Windows XP Service Pack 3 (32ビット版)


==
関連ページ:
    ▼Windowsコマンド。プログラム実行関連(▼ABC順)
    ▼Windowsコマンド一覧(▼ABC順)
    ▼コマンドプロンプト画面
    ▼制作メモ
    > 変数 %* = %1以降の引数全て
    環境変数 PATH = 実行可能ファイルを検索する場所
    環境変数 PATHEXT = 実行可能ファイルの拡張子

変数 %* = %1以降の引数全て - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。プログラム実行関連 ▲
○Windows XP
変数 %* の中には、%1以降の引数全てが入っています。

o この変数は、バッチファイルの呼び出し時など、%1が設定されるタイミングで設定されます。
o % と * の間に修飾子を入れるとエラーになりますので、注意します。


**** 書式
--------
%*
--------



**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o (設定なし) = この機能は、ERRORLEVELの値を更新しません。


**** 使用例
-------- ミクさん.bat
@echo off
echo %*。合唱の準備をお願いします。
--------


o 実行コマンド
--------
ミクさん.bat ミクさん リンちゃん レン君 ルカ様
--------



**** 機能
o この変数は、次の時に設定されます。
    + バッチファイルを引数付きで呼び出した時
    + CALLコマンドを引数付きで呼び出した時
    + バッチファイルや CALL コマンドを終了すると、この変数の値は元に戻ります。
o % と * の間に修飾子を入れるとエラーになりますので、注意します。
    + この変数に関しては、%^n1 のように書くとエラーになります。
    + ですので、変数の内容を加工したい時は、一旦、環境変数に入れるなどしてから加工します。
    + 詳しくは、「SET = 環境変数を表示、設定、削除する。もしくは数値計算する」


**** 確認したバージョン
o Windows XP Service Pack 3 (32ビット版)


==
関連ページ:
    ▼Windowsコマンド。プログラム実行関連(▼ABC順)
    ▼Windowsコマンド一覧(▼ABC順)
    ▼コマンドプロンプト画面
    ▼制作メモ
    > 環境変数 PATH = 実行可能ファイルを検索する場所
    環境変数 PATHEXT = 実行可能ファイルの拡張子

変数 %0 = 実行中のバッチファイル名、もしくはCALLラベル名 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。プログラム実行関連 ▲
○Windows XP
実行中のバッチファイル自身のファイル名が入っています。
但し、CALLコマンドでラベルの内容を実行している間は、CALLコマンドで指定したラベル名が入ります。

o 実行する時に呼び出したバッチファイル名が、そのまま入ります。
o CALLコマンド実行時、ラベル名が入る変数は %0 だけです。
    + %~n0 のように加工指定した場合は、バッチファイル名が加工されますので、注意します。


**** 書式
--------
%0
--------



**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o (設定なし) = この機能は、ERRORLEVELの値を更新しません。


**** 使用例
-------- ミクさん.bat
@echo off
echo このファイルの名前は「%0」です。
echo 起きて下さい。%~n0。
--------


o 実行コマンド
--------
ミクさん.bat
--------

    + %と0の間にキーワードを入れると、変数の取り出し方を変える事が出来ます。
    + 詳しくは、「%変数の使い方」


**** 機能
o 実行中のバッチファイル自身のファイル名が入っています。
    + この変数に入るファイル名は、バッチファイルの呼び出し方次第で変わります。
    + 「ミクさん.bat」だったり、
    + 「c:\ミクさん\ミクさん.bat」だったり、
    + 「..\ミクさん.bat」だったりします。
o 但し、CALLコマンドでラベルの内容を実行している間は、CALLコマンドで指定したラベル名が入ります。
    + %~n0 のように加工指定した時は、バッチファイル名が加工されますので、注意します。


**** 確認したバージョン
o Windows XP Service Pack 3 (32ビット版)


==
関連ページ:
    ▼Windowsコマンド。プログラム実行関連(▼ABC順)
    ▼Windowsコマンド一覧(▼ABC順)
    ▼コマンドプロンプト画面
    ▼制作メモ
    > 変数 %1 = バッチファイルやCALL文の最初の引数
    変数 %* = %1以降の引数全て
    環境変数 PATH = 実行可能ファイルを検索する場所

2011年10月9日日曜日

FINDSTR /L = ファイルの中を文字列検索する。OR検索可能版 - Windowsのコマンドプロンプト(bat,cmd)

WindowsコマンドのFINDSTR ▲
○Windows XP
指定した文字列でそのまま検索したい時は、FINDSTR /L コマンドを使う方法が便利です。

o FINDコマンドとは次の点で異なります。
    +複数の文字列を指定して、いずれかの文字列に一致する行を見つける事が出来ます。
    + 一方、現在のコードページ以外の文字コードは、常に不一致になります。
        + FIND コマンドの場合は Unicode(= UTF-16LE)のファイルも検索可能ですが、このコマンドは違います。
o /L を付けない場合、正規表現として検索する場合があります。

**** 書式
--------
findstr /l [オプション] "検索文字列" [ファイル名]
もしくは
findstr /l [オプション] "検索文字列" < ファイル名
もしくは
コマンド | find /l [オプション] "文字列"
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
o オプション = 検索する文字列に半角空白を含めたい時は、「find /c:"文字列"」もしくは「find /l /c:"文字列"」の形で指定します。
    + /C オプションを付けると、自動的に /L /C となります。
    + その他のオプションについては、「FINDSTR(後日公開予定)」の説明をご覧下さい。
o 検索文字列 = 「"」(= 二重引用符)で括ります。
    + 複数の検索文字列を指定して OR検索したい時は、途中に半角空白を入れます。
        + 例:「findstr /l "ミクさん ネギ"」
        + この時、「ミクさん」または「ネギ」が含まれている行を検索します。
    + 但し、/C オプションを指定した時は、空白文字も検索文字列の一部になります。
o ファイル名 = 中を検索したいファイル名です。
    + UNIX形式の区切り文字「/」も指定出来ます。(例「C:/ミクさん/ネギ.txt」)
    + リダイレクトを使わない時は、動きが少し変わります。
        + ファイル名を複数並べる事が出来ます。
        + ファイル名にワイルドカード(「*」や「?」)を使用する事も出来ます。
        + ワイルドカード使用時、表示結果の行の先頭にファイル名+「:」(コロン)を追加します。
--------
findstr "ミクさん ネギ" ミクさん*.txt
ミクさん.txt: ミクさんの好きな食べ物 = ネギ
--------

    + ファイル名を指定せず、入力のリダイレクトも無い時は、キーボードからのデータ入力を待ちます。
        + データの終わりは「Ctrl キーを押しながら Z キー」。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = 検索結果 1件以上
    + 「FINDSTR: 開くことができません (ネギ.txt)」 = 見つからないファイルがあります。
    + 「FINDSTR: /z は無視されました。」 = 間違っているオプションは無視して実行します。
    + ファイル名が間違っていても、1ファイル以上検索して見つかった行がある場合には、戻り値は 0 になります。
o 1 = 検索結果 0件
    + 「FINDSTR: 開くことができません (ネギ.txt)」 = 見つからないファイルがあります。
    + 「FINDSTR: /z は無視されました。」 = 間違っているオプションは無視して実行します。
    + ファイル名が間違っていても、指定した全てのファイルで見つかった行が無い場合に限り、戻り値は 1 になります。
o 2 = 書式エラー
    + 「FINDSTR: コマンド ラインが正しくありません」 = 検索する文字列を指定して下さい。
    + 「FIND: パラメータの書式が違います」 = 検索する文字列を指定して下さい。


**** 使用例
--------
findstr /l "ミクさん ネギ" ミクさん.txt

dir | findstr /l "ミクさん.txt"
findstr /l "ミクさん.net" < ミクさん.txt
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + 最初の使用例は、/L オプションを付けなくても正しく検索します。
        + 検索文字列に、正規表現の記号を使っていないからです。


**** 機能
o ファイルの中を文字列検索して、条件と一致する行、もしくは見つかったファイルの名前を表示します。
o ファイル名は、複数並べる事が出来ます。ワイルドカードを使用する事も出来ます。
    + この時、表示結果にファイル名が含まれます。


**** メモ
o Windows XPでは、文字コードが ANSI (= Windows版Shift-JIS)のファイルだけ比較する事が出来ました。
    + FIND コマンドとは異なり、Unicode(= UTF-16LE)のファイルは常に不一致になりますので、注意します。
o 検索文字列の指定方法について。検索文字列が1つの場合、「"」で括らなくても正しく動くみたいです。
    + 但し、ヘルプに書かれている書き方は、「"」付きです。
    + また、半角空白を入れてOR検索したい時は、必ず「"」で括ります。


**** 確認したバージョン
o Windows XP Service Pack 3 + Windows Update 2011年9月版


==
関連ページ:
    ▼FINDSTR = ファイルの中を正規表現、もしくは文字列で検索する。OR検索可能版
    ▼Windowsコマンド。ファイルとフォルダー関連(▼ABC順)
    ▼Windowsコマンド一覧(▼ABC順)
    ▼コマンドプロンプト画面
    > FINDSTRコマンドで正規表現を使う時の注意点

FINDSTR = ファイルの中を正規表現、もしくは文字列で検索する。OR検索可能版 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連 ▲
o 主な使い方
FINDSTR (/R) = ファイルの中を、正規表現で検索する。OR検索可能版
FINDSTR /L = ファイルの中を、普通の文字列で検索する。OR検索可能版
FINDSTR /C = ファイル内容検索で、半角空白も検索文字列に含める

o 使用上の注意点
FINDSTRコマンドで正規表現を使う時の注意点


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連(▼ABC順)
    ▼Windowsコマンド一覧(▼ABC順)
    ▼コマンドプロンプト画面
    > FC = ファイルの内容を比較して、それらの違いを表示する
    COMP = ファイルの内容を比較する。最後に質問あり版
    DISKCOMP = フロッピーディスクの内容を比較する。途中に質問あり版

2011年9月30日金曜日

FINDSTRコマンドで正規表現を使う時の注意点 - Windowsのコマンドプロンプト(bat,cmd)

WindowsコマンドのFINDSTR ▲
○Windows XP
FINDSTRコマンドで正規表現を使う時、予想外の動きをするパターンがありましたので、メモします。

o 問題となるパターンは、[abc] の形の正規表現(= [a-c] や [^abc]も)
    + 括弧内はバイト単位で比較します。全角半角混在の時に問題になります。
    + [a-c] を評価する時に、半角文字をaAbBcC の順で調べます。
o 確認した文字は 日本語(= Windows版の Shift-JIS = コードページ 932)
o 確認したOSは Windows XP Service Pack 3 です。


**** 注意点
o [abc] の形の正規表現は、括弧の中に書かれていない文字がヒットする場合があります。
    + (= [a-c] や [^abc]も同様です)
o 問題となるパターンの例
--------
findstr "[ABC]" mikusan.txt
findstr "[a-c]" mikusan.txt
findstr "[^abc]" mikusan.txt
--------

    + "[ABC]" パターンで半角文字を検索すると、全角文字がヒットする事があります。
        + ファイルの中の全角文字の2バイト目が、半角文字の文字コードと一致すると起こります。
    + 逆に、"[アイウ]" パターンで全角文字を検索すると、半角文字がヒットする事があります。
        + 例えば、"[アイウ]" で検索すると、半角文字「A」「C」がヒットします。
        + ファイルの中の半角文字の文字コードが、全角文字の2バイト目と一致すると起こります。
    + "[A-C]" パターンで大文字の半角文字を検索すると、上記に加えて一部の小文字がヒットします。
        + 例えば、"[A-C]" で検索すると、小文字の「b」と「c」もヒットします。
    + (小文字の "[a-c]" パターンの時は、一部の大文字がヒットします。)


**** 原因(推定)
o このコマンドは、[abc] 内の半角文字を比較する時に、aAbBcC の順で調べているみたいです。
    + ですので、[A-C] を指定すると、「b」「c」を含む行もヒットします。
o また、このコマンドは、正規表現 [abc] を検索する時に、バイト単位で文字比較しています。
    + 半角文字の検索では、2バイト目に半角文字と同じコードを含む全角文字もヒットします。
    + 全角文字の検索では、全角文字の2バイト目と同じコードを持つ半角文字もヒットします。


**** 問題となった例
o [abc] の形の正規表現
    + [ABC] を指定すると、「A」「B」「C」の他に、カナの「ア」「イ」「ィ」もヒットしました。
    + [A-C] を指定すると、「A」「B」「C」の他に、小文字の「b」「c」カナの「ア」「イ」「ィ」もヒットしました。
    + [a-c] を指定すると、「a」「b」「c」の他に、大文字の「A」「B」カナの「ア」「ィ」もヒットしました。
    + [ア] を指定すると、「ア」の他に、大文字の「A」もヒットしました。

-------- コマンドの例
findstr "[a-c]" mikusan.txt
--------



**** メモ
o この現象を回避したい時は、問題となる部分を他のプログラムに任せてしまう方法がおすすめです。
    + 私の場合は、バッチファイルから ▼AWK を呼び出しています。


**** 確認したバージョン
o Windows XP Service Pack 3 + Windows Update 2011年9月版


==
関連ページ:
    ▼FINDSTR = ファイルの中を正規表現、もしくは文字列で検索する。OR検索可能版
    ▼Windowsコマンド。ファイルとフォルダー関連(▼ABC順)
    ▼Windowsコマンド一覧(▼ABC順)
    ▼コマンドプロンプト画面
    > FC = ファイルの内容を比較して、それらの違いを表示する
(2011年11月10日追加。メモ欄)
(2011年10月14日変更。冒頭に問題点まとめを追加)
(2011年10月1日変更。問題となるパターンの例を下に移動)

2011年9月25日日曜日

SORT = ファイルの内容やコマンド出力結果を並べ替えて表示する - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連 ▲
Windowsコマンド。プログラム実行関連 <▲>
○Windows XP
ファイルの内容やコマンド出力結果を、並べ替えて表示します。

o 常に文字コード順で比較するみたいです。
    + 数値の比較をしたい時は、前に半角空白を入れて、1の位までの文字数を合わせておきます。
    + 数値に正の数と負の数が混在している場合は、さらに工夫が必要になります。
o 比較結果が全く同じ行が複数ある時、並び順はこのコマンドの実装に依存します。
o 1行の長さ制限があります。
    + このコマンドで並び替え出来るのは、1行の長さが「65534文字 + 改行コード」までのデータです。
    + 1行の長さが「4095文字 + 改行コード」を超える時は、/rec オプションを指定します。


**** 書式
--------
sort [ オプション ] 入力ファイル名 [ /t 作業用フォルダー名 ] [ /o 出力ファイル名 ]
もしくは
sort [ オプション ] < 入力ファイル名
もしくは
実行コマンド | sort [ オプション ]
--------

o コマンド名は、大文字小文字のどちらでも大丈夫です。
o オプション = 下記のオプションを、半角空白区切りで並べます。
    + /t と /o だけ後ろにしていますが、これはヘルプの記述に合わせました。
    + Windows XPの場合、オプションの記述場所は、ファイル名の前後どちらでも大丈夫みたいです。
SORT コマンドのオプション一覧
名前記述例意味
/+数字/+2比較開始位置(= 文字数)をずらします。
/+2 は2文字目から比較します。
指定した数よりも文字が少ない行は、上に並びます。
/l ロケール名
もしくは
/locale ロケール名
/l "C"ロケールです。文字の比較順序を変更します。
Windows XPでは、大文字の "C" のみ使用可能です。
"C"ロケールは、大文字小文字を区別し、最も高速に比較します、とヘルプの説明にありました。
/m 数字
もしくは
/memory 数字
/m 393並べ替えに使うメモリ量(KB 単位)です。
最小 160KBです。
既定では、使用メモリ量を自動調節します。自動調節時の最大使用メモリ量は、入出力の両方がファイルの時、メインメモリの90%まで。そうでない場合は、メインメモリの45%まで、と、ヘルプの説明にありました。
/r
もしくは
/reverse
/r降順 = 並び替えの順序を逆にします。
/rec 文字数
もしくは
/record_maximum 文字数
/rec 65535行の最大文字数を指定します。
全角文字も1文字と数えます。
最大 65535 = 「65534文字+改行」まで。
指定が無い時の既定値は 4096 = 「4095 文字+改行」
/t 作業用フォルダー名
もしくは
/temporary 作業用フォルダー名
/t d:\ミクさんメモリで処理出来ない時に一時ファイルを作る場所です。
自動実行していて、ドライブの空き容量が心配な時に指定すると安心です。
既定では、システムの一時ディレクトリを使用する、とヘルプの説明にありました。
/o 出力ファイル名
もしくは
/output 出力ファイル名
/o c:\ミクさん出力ファイル名を指定します。
標準出力をリダイレクトするよりも、このオプションを指定した方が速い、とヘルプの説明にありました。
o 入力ファイル名 = ファイルを1つだけ指定します。
    + ファイルのパスの区切り文字は、UNIXの区切り文字「/」を使う事も出来ます。
    + ワイルドカード(「*」や「?」)は使用出来ません。
    + ファイル名の途中に空白を含む時は、ファイル名を「"」(2重引用符)で括ります。
    + 入力ファイル名を省略し、リダイレクトやパイプからの入力も無い時は、次のように動きます。
        + 並び替えたいデータの入力を待ちます。
        + データの入力終了は、Ctrl + Z(= 「Ctrl」キーを押しながら「Z」キー)
o /t 作業用フォルダー名 = 詳しくは、上記のオプション一覧を御覧下さい。
o /o 出力ファイル名 = 詳しくは、上記のオプション一覧を御覧下さい。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = 成功
    + 「警告: 指定されたメモリ サイズは、小さすぎます。最小値に調節します。」 = /m 160 (単位は KB)に変更しました。
o 1 = 失敗
    + 「無効なスイッチです。」 = オプションの書き方を見直して下さい。
    + 「無効なロケールです。」 = ロケールは、大文字の "C" のみ使用出来ます。
    + 「並べ替え位置は、0 より大きくなければなりません。」 =/+ オプションの数字を1以上にして下さい。
    + 「並べ替えを完了する十分なメモリがありません。」 = /m オプションの値を小さくして下さい。
    + 「レコードの最大長は、65535 を超えられません。」 = /rec オプションの値を小さくして下さい。
    + 「入力ファイルが 2 度指定されました。」 = 空白付きのファイル名などを指定する時は「"」で括ります。
    + 「入力レコードが最大長を超えました。より大きい最大長を指定してください。」 = /rec オプションの値を大きくして下さい。
    + 「c:\ネギ\out.txt指定されたパスが見つかりません。」 = 指定したファイル名やフォルダー名を見直して下さい。


**** 使用例
--------
sort ミクさんのネギ.txt

dir /b c:\ミクさん | sort /r
--------

    + コマンド名やキーワードは、大文字で書く事も出来ます。


**** 機能
o ファイルの内容やコマンド出力結果を、並べ替えて表示します。
o オプションを指定しない時、1行の文字数が「4095 文字 + 改行コード」までのデータを並び替える事が出来ます。
    + 全角文字が含まれていても同じです。
    + 足りない時は、/rec オプションを使います。
o 常に文字コード順で比較するみたいです。
    + 数値の比較をしたい時は、前に半角空白を入れて、1の位までの文字数を合わせておきます。
    + 数値に正の数と負の数が混在している場合は、さらに工夫が必要になります。
        + 例えば、行の先頭に、「数値に大きな数を加えた、必ず正の数になる」列を追加しておく方法があります。
        + もちろん、SORTコマンド以外の外部ツールを使って並び替える方法もあります。
o 行の途中から比較する事も出来ます。
o 比較結果が全く同じ行が複数ある時、並び順はこのコマンドの実装に依存します。
o このコマンドは、入力ファイルを属性に関わらず認識します。
    + 「システムファイル属性」や「隠しファイル属性」のファイルを入力する事が出来ました。

** このコマンドの制限事項
o 1行の最大文字数は、「65534文字 + 改行コード」まで。(= /rec 65535 指定時)
    + 65535文字以上の行が見つかると、エラーになります。
    + 全角文字が含まれていても同じです。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連(▼ABC順)
    ▼Windowsコマンド。プログラム実行関連(▼ABC順)
    ▼コマンドプロンプト画面
    ▼制作メモ
    ▼目次
    > COPY = ファイルをコピーする
    COPYコマンドの /Aと/Bの意味
    > 変数 %0 = 実行中のバッチファイル名、もしくはCALLラベル名
    変数 %1 = バッチファイルやCALL文の最初の引数
(2011年9月26日追加。データ中に正負の数が混在している時の並べ方)
(2011年9月25日変更。/tと/oの指定位置について、ヘルプの並び順に準拠)

2011年8月31日水曜日

COPY = ファイルをコピーする - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連 ▲
○Windows XP
指定したファイルをコピーします。

o 同じフォルダーにある複数のファイルを、コマンド1つでコピーする事も出来ます。
o 複数のファイルを連結して、1つのファイルにコピーする事も出来ます。但し、癖があります。
o フォルダー毎コピーしたい時は、XCOPY コマンドを使います。


**** 書式
--------
copy [ オプション ] コピー元ファイル名など [ /A ][ /B ] コピー先ファイル名など [ /A ][ /B ]
もしくは
copy [ オプション ] 連結コピーするファイル名 [ /A ][ /B ] [ + 連結コピーするファイル名 [ /A ][ /B ]] コピー先ファイル名 [ /A ][ /B ]
--------

o コマンド名は、大文字小文字のどちらでも大丈夫です。
o オプション = 下記のオプションを、半角空白区切りで並べます。
    + オプションを省略した時は、次のように動きます。
        + ファイルを1対1でコピーする時は、/B 扱いになります。
        + 複数のファイルを連結して1ファイルにする時は、/A 扱いになります。
COPY コマンドのオプション一覧
名前意味
/A昔の ASCII テキストファイル形式でコピーします。
主に複数の「Unicode」形式ファイルを連結してコピーする時に使います。
連結コピーする時は、既定値がこのモードになります。不要な時は /B
/Bファイルの内容をそのままコピーします。
Bは、バイナリファイルのBです。
ファイルを 1対1でコピーする時は、このモードが既定値です。
/D何も起こらないみたいです。(= Windows XPの場合)
ヘルプの説明では、コピー先のファイルについて、暗号化を解除します。
/Vコピー先のファイルについて、正しくコピーされたかどうか検査します。
/Nファイル名を、なるべく、MS-DOS形式の短い名前にします。
MS-DOS形式 = ファイル名が「半角8文字以下 + ピリオド + 半角3文字以下」の形式です。
短く出来ない時は、長いファイル名のままコピーします。
/Y上書きする時に、確認メッセージを表示しません。
/Y や/-Yの指定が無い時は、環境変数 COPYCMD の値に依存します。
    + 環境変数 COPYCMD の値が「/Y」もしくは「/y」の時、上書きする時に確認メッセージを表示しません。
    + 環境変数 COPYCMD の値が上記以外、もしくは設定されていない時は、確認メッセージを表示します。
/-Y上書きする時に、確認メッセージを表示します。
/Y や/-Yの指定が無い時は、環境変数 COPYCMD の値に依存します。
/Zネットワークファイルを再起動可能モードでコピーします。
= コピー途中でネットワークが一時的に切断した時に、コピーを再開するみたいです。
このオプションを付けた時、「100% コピー終了」のような表示が増えます。
o コピー元ファイル名など
    + ファイルを指定する場合、ワイルドカード(「*」や「?」)を使用出来ます。
    + フォルダーを指定すると、その下にあるファイルを連結コピーします。
        + 内容をつなげて、1つのファイルにします。
    + ファイルのパスの区切り文字は「\」のみです。
        + このコマンドでは、UNIXの区切り文字「/」を使う事は出来ません。
o コピー先ファイル名など
    + 既存のフォルダーを指定すると、そのフォルダーにファイルをコピーします。
    + ファイルを指定すると、そのファイルにコピーします。
    + 連結コピーする時は、/A が初期値になりますので、必要に応じて /B を指定する等します。
    + ファイルのパスの区切り文字は「\」のみです。
        + このコマンドでは、UNIXの区切り文字「/」を使う事は出来ません。
o 連結コピーするファイル名
    + コピーしたいファイル名です。
    + 「+」を使って、複数のファイルを連結する事が出来ます。
        + コマンドに書いた順に、ファイルを連結します。
        + 「+」指定時、/A が初期値になりますので、必要に応じて /B を指定するなどします。
    + ワイルドカード(「*」や「?」)を使用出来ます。
    + 「+」で連結する時は、フォルダーは指定出来ません。
    + ファイルのパスの区切り文字は「\」のみです。
        + このコマンドでは、UNIXの区切り文字「/」を使う事は出来ません。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = 成功
    + ファイルの上書きで No を選択した時も、成功になります。
o 1 = 失敗。ファイルのアクセスエラー
    + 「指定されたファイルが見つかりません。」 = 指定したファイルが無いか、「+」指定が抜けています。
    + 「指定されたドライブが見つかりません。」 = ファイル名のパスに書いたドライブ名が間違っています。
    + 「ネットワーク パスが見つかりません。」 = ファイル名のパスに書いたネットワークドライブ名が間違っています。
    + 「コマンドの構文が誤っています。」 = おそらく、オプションの書き方が間違っています。
        + もしくは、ファイルのパスの区切り文字は「\」を使って下さい。


**** 使用例
o 1対1でファイルをコピー
--------
copy ネギ.txt ミクさんのネギ.txt

copy /y ネギ*.txt ミクさんフォルダー
copy /y ネギフォルダー ミクさんフォルダー
--------

    + コマンド名は、大文字で書く事も出来ます。
    + /Y オプションを付けると、上書きの時にも質問しません。

o 複数のファイルを1つのファイルに連結コピー
--------
copy /b ネギ1.txt + ネギ2.txt ミクさんのネギ.txt
copy /b c:\ネギフォルダー\ネギ*.txt ミクさんのネギ.txt

rem # Unicode形式で保存されている時は
copy ネギ1_Unicode.txt + ネギ2_Unicode.txt ミクさんのネギ_Unicode.txt
--------

    + 連結コピーする時は、/A オプションが既定になります。
    + /Aは、Unicode形式(= UTF-16 LE BOM付き)で保存されたファイルの連結の時に便利です。
    + 自動化する時は、/Y オプション追加。付けると、上書きの時に質問で止まりません。


**** 機能
o 指定したファイルをコピーします。
o 同じフォルダーにある複数のファイルをコピーする事も出来ます。
o 複数のファイルを連結して、1つのファイルにコピーする事も出来ます。但し、癖があります。
    +この時は、/A が既定になります。
    + 1対1でコピーする時、/B が既定になります。
    + これらの動作を変更したい時は、オプションを指定します。

** COPYコマンドの対象にならないファイル
o COPYコマンドは、次の属性を持つファイルを、検索対象から「除外」します。
    + システムファイル属性
    + 隠しファイル属性
o これらのファイルの属性変更は、ATTRIB コマンドで行う事が出来ます。
o また、隠しファイル属性は、ファイルのプロパティで設定する事も出来ます。


**** メモ
o フォルダーごとコピーしたい時は、XCOPY コマンドを使います。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連(▼ABC順)
    ▼コマンドプロンプト画面
    ▼制作メモ
    ▼目次
    > COPYコマンドの /Aと/Bの意味
    DISKCOPY = フロッピーディスクの内容を別のフロッピーディスクにコピーする。途中に質問あり版
    MOVE = ファイルを移動する

2011年8月26日金曜日

DISKCOPY = フロッピーディスクの内容を別のフロッピーディスクにコピーする。途中に質問あり版 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連 ▲
○Windows XP
フロッピーディスクの内容を、別のフロッピーディスクにコピーします。

o このコマンドの実行には、フロッピーディスクドライブが 2台必要になります。
    + 1台しかない時は、仮想フロッピーディスクドライブなどで代用する方法があります。
o このコマンドを実行する前に、カレントドライブを他のドライブに移動しておく必要があります。
o このコマンドは途中で質問します。


**** 書式
--------
diskcopy ドライブ1: ドライブ2: [/v]
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
o ドライブ1: = 1枚目(= コピー元)のフロッピーディスクを入れるドライブ名です。(例 a: )
    + アルファベット1文字の後にコロンを付けます。
o ドライブ2: = 2枚目(= コピー先)のフロッピーディスクを入れるドライブ名です。
    + アルファベット1文字の後にコロンを付けます。
    + ヘルプにはドライブ名は省略可能とありますが、実際には2つ共必要でした。
o /v = 正しくコピーされたかどうか検査します。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = コピー成功
    + 終了せずに続けてコピーした時は、最後に実行した結果が戻ります。
        + 失敗が続いていても、最後が成功したら、0です。
o 3 = 失敗。フロッピーディスクが抜けた状態で実行
    + 終了せずに続けてコピーした時は、最後に実行した結果が戻ります。
        + 成功が続いていても、最後が失敗したら 3です。
    + 「送り側ディスクが正しくないか、または互換性がありません。」
        + = 1枚目の読み取りに失敗しました。おそらくドライブにディスクが入っていません。
    + 「受け側ディスクが正しくないか、または互換性がありません。」
        + = 2枚目の読み取りに失敗しました。おそらくドライブにディスクが入っていません。
o 4 = 失敗。準備不足
    + 「現在のドライブはロックできません。」
        + = このコマンドを実行する前に、カレントドライブを使用するフロッピーディスクドライブ以外に移動して下さい。
    + 「無効なドライブ指定です。指定されたドライブは存在しないか、またはハード ディスクです。」
        + = ドライブ名を2つ指定して下さい。


**** 機能
o フロッピーディスクの内容を、別のフロッピーディスクにコピーします。

o このコマンドの実行には、フロッピーディスクドライブが 2台必要になります。
    + ヘルプには、1台でも可能なように書いていますが、実際に動かすとエラーになりました。
o このコマンドを実行する前に、カレントドライブを他のドライブに移動しておく必要があります。
o このコマンドは、途中で質問してきます。
    + ですので、このコマンドは、自動実行には向いていません。


**** 使用例
--------
rem # フロッピーディスクを A ドライブと B ドライブに入れた後に
diskcopy a: b:
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + 途中で質問してきます。ですので、このコマンドは、自動処理には向いていません。


** 表示の流れ
--------
C:\>diskcopy a: b:

ドライブ A: に送り側ディスクを挿入してください

ドライブ B: に受け側ディスクを挿入してください
準備ができたら Enter キーを押してください...

コピーしています
トラック数: 80、セクタ数: 18 セクタ/トラック、サイド数: 2
ボリューム シリアル番号は 1011-C304 です

別のディスクをコピーしますか (Y/N)? n
--------

    + 途中操作が2回必要です。「Enter」キー、「N」「Enter」キー


**** メモ
o 最近のパソコンには、フロッピーディスクドライブが付いていない事が良くあります。
o そのような時は、仮想フロッピーディスクドライブなどで代用する方法があります。
    + 仮想フロッピーディスクドライブは、フリーウェアなどの形で公開されています。
    + もっとも、動作保障はありませんから、必要な時は、自己責任で試す事になります。


**** 確認したバージョン
o Windows XP Service Pack 3 (32bit) + Windows Update 2011年8月版


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連(▼ABC順)
    ▼Windowsコマンド一覧(▼ABC順)
    ▼コマンドプロンプト画面
    ▼制作メモ
    > MOVE = ファイルを移動する
    REN = ファイルやフォルダーの名前を変更する
    REPLACE = ファイルを置き換える(= 差分コピーする)

2011年8月25日木曜日

DISKCOMP = フロッピーディスクの内容を比較する。途中に質問あり版 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連 ▲
○Windows XP
2枚のフロッピーディスクの内容を比較します。
フロッピーディスクドライブが1台だけの時も、実行する事が出来ます。

o フロッピーディスクドライブが1台だけの時は、このコマンドを実行する時、
    + 予め、フロッピーディスクをフロッピーディスクドライブに入れて、
    + カレントドライブをそのドライブに移動しておく必要があります。
o フロッピーディスクドライブが2台ある時も、このコマンドは途中で質問します。


**** 書式
--------
diskcomp [ドライブ1: [ドライブ2:]]
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
o ドライブ1: = 1枚目のフロッピーディスクを入れるドライブ名です。(例 a: )
    + アルファベット1文字の後にコロンを付けます。
    + 省略可能です。省略時は、カレントドライブを使います。
o ドライブ2: = 2枚目のフロッピーディスクを入れるドライブ名です。
    + アルファベット1文字の後にコロンを付けます。
    + 省略可能です。省略時は、カレントドライブを使います。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = フロッピーディスク内容の一致
    + 「違いはありません」 = 2つのフロッピーディスクの内容は同じです。
    + 続けて比較した時は、最後に実行した結果が戻ります。
        + 不一致が続いていても、最後の比較結果が一致なら、0です。
o 1 = フロッピーディスク内容に相違有り
    + 「サイド 0、トラック 0 で比較エラーがありました」 = 相違点を発見しました。
    + 続けて比較した時は、最後に実行した結果が戻ります。
        + 一致が続いていても、最後の比較結果が不一致なら、1です。
o 3 = フロッピーディスクが抜けた状態で実行
    + 「1 枚目のディスクが正しくないか、または互換性がありません。」
        + = 1枚目の読み取りに失敗しました。おそらくドライブにディスクが入っていません。
    + 「2 枚目のディスクが正しくないか、または互換性がありません。」
        + = 2枚目の読み取りに失敗しました。おそらくドライブにディスクが入っていません。
o 4 = カレントドライブ不正
    + 「無効なドライブ指定です。指定されたドライブは存在しないか、またはハード ディスクです。」
        + = このコマンドを実行する前に、カレントドライブをフロッピーディスクドライブに移動して下さい。
o 9084 = カレントドライブ移動後のフロッピーディスク抜き
    + 最初に「ディスクがありません」エラーメッセージ画面が出てきて、2回キャンセルすると
    + 「現在のディレクトリは無効です。」
        + フロッピーディスクを現在のドライブに入れてから実行して下さい。


**** 機能
o 2枚のフロッピーディスクの内容を比較します。
    + フロッピーディスクドライブが1台だけの時も、実行する事が出来ます。
o フロッピーディスクドライブが1台だけの時は、このコマンドを実行する前に準備が必要です。
    + 予め、フロッピーディスクをフロッピーディスクドライブに入れて、
    + カレントドライブをそのドライブに移しておく必要があります。
o このコマンドは、途中で質問してきます。
    + ですので、このコマンドは、自動実行には向いていません。


**** 使用例
--------
rem # フロッピーディスクを A ドライブに入れた後に
a:
diskcomp a:

diskcomp
diskcomp a: b:
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + 途中で質問してきます。ですので、このコマンドは、自動処理には向いていません。


** 表示の流れ
--------
A:\>diskcomp a:

ドライブ A: に 1 枚目のディスクを挿入してください
準備ができたら Enter キーを押してください...

比較しています
トラック数: 80, セクタ数: 18 セクタ/トラック, サイド数: 2

ドライブ A: に 2 枚目のディスクを挿入してください
準備ができたら Enter キーを押してください...

違いはありません

別のディスクを比較しますか (Y/N)? n
--------

    + ドライブを1つ使う時は、途中操作が3回必要です。「Enter」キー、「Enter」キー、「N」「Enter」キー
    + ドライブを2つ使う時には、途中操作が2回に減ります。「Enter」キー、「N」「Enter」キー

** 不一致の時の表示の流れ
--------
ドライブ A: に 2 枚目のディスクを挿入してください
準備ができたら Enter キーを押してください...

サイド 0、トラック 0 で
比較エラーがありました

サイド 1、トラック 0 で
比較エラーがありました

別のディスクを比較しますか (Y/N)? n
--------



**** 確認したバージョン
o Windows XP Service Pack 3 (32bit) + Windows Update 2011年8月版


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連(▼ABC順)
    ▼Windowsコマンド一覧(▼ABC順)
    ▼コマンドプロンプト画面
    ▼制作メモ
    > SORT = ファイルの内容やコマンド出力結果を並べ替えて表示する
    COPY = ファイルをコピーする
    COPYコマンドの /Aと/Bの意味
    +
    FC = ファイルの内容を比較して、それらの違いを表示する
    COMP = ファイルの内容を比較する。最後に質問あり版
    DISKCOPY = フロッピーディスクの内容を別のフロッピーディスクにコピーする。途中に質問あり版
(2011年8月26日追加。FDD2台指定時の動作。省略時の既定ドライブはカレントドライブ)

2011年8月24日水曜日

COPYコマンドの /Aと/Bの意味 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連 ▲
○Windows XP
COPYコマンドのヘルプには、次のような説明が出てきます。

o /A = ASCII テキスト ファイルとして扱います。
o /B = バイナリ ファイルとして扱います。

そこで、これらのオプションを指定した時に、何が起きるのかを調べてみました。


**** 結論
o 通常のファイルコピーでは、/A は使わない方が安全です。
o 複数のファイルを結合して1つのファイルにする時は、何も指定しないと /A でコピーします。
    + この時、「Unicode」形式で保存したテキストファイル以外は、/B を付ける等の対応が必要です。

**** 詳細
** 2つのファイル形式の違い
o バイナリ ファイル = ファイルの最後に、余分な文字コードを追加しない形式です。
o ASCII テキスト ファイル = 2種類の形式があります。
    + 文字コードが「Unicode」の時は、ファイルの先頭2文字が文字コード 0xFF 0xFE で始まる形式です。
        + 「Unicode」 = 「UTF-16 LE の、BOM付き」の事です。
        + この動作は、メモ帳で保存する時と同じです。
    + 文字コードが「Unicode」以外の時は、ファイルの最後に、文字コード 0x1A を追加する形式です。
        + もちろん、ファイル内容の途中で文字コード 0x1Aは出てきません。
        + (文字コード 0x1Aが出てきた時点で、ファイルの最後とみなします。)
        + この動作は、メモ帳で保存する時とは異なります。

o 確認した文字コードは
    + 「Unicode」 = 「UTF-16 LE BOM付き」 = 特殊扱い
    + 「Unicode big endian」 = 「UTF-16 BE BOM付き」
    + 「ANSI」 = WIndows版 Shift-JIS
    + 「UTF-8」 = UTF-8 BOM付き
    + UTF-8 BOM無し
    + UTF-16 LE BOM無し
    + EUC-JP
    + 上記以外の文字コードは未確認です。

** COPY コマンドの動作
o ファイルをコピーする時、COPY コマンドは次のように仮定します。
    + 1対1のコピーの時は、バイナリファイルであると仮定
    + 複数ファイルを連結して1つのファイルにコピーする時は、ASCIIテキストファイルであると仮定
    + /A や /B オプションを付ける事で、その仮定を打ち消す事が出来ます。
o オプションの判定方法について
    + 同じ場所で /B /A のように並べて書いた時は、後ろに書いたオプションが有効になります。
--------
rem 次の2つのコマンドは、同じ意味です。
copy ネギ.txt /b /a ミクさん.txt
copy ネギ.txt /a ミクさん.txt
--------

    + コピー元ファイルのオプションが指定されていない時
        + そのファイル名の左に書かれているオプションを参照します。
        + 複数のファイルを「+」で連結している時は、1つ左、無ければ2つ左、というの順で参照します。
--------
rem 次の2つのコマンドは、同じ意味です。
copy ネギ1.txt /b + ネギ2.txt ミクさん.txt
copy ネギ1.txt /b + ネギ2.txt /b ミクさん.txt
--------

    + コピー先ファイルのオプションが指定されていない時
        + COPYコマンドの直後の場所に書かれているオプションを参照します。
    + 参照先にも指定が無い時は、
        + 1対1でファイルコピーする時は、/B = バイナリファイル扱い
        + 複数ファイルを1ファイルにコピーする時は、/A = ASCII テキストファイル扱い

o コピー元ファイルが/A オプション(扱い)の時の動作
    + ファイルの先頭2文字が、文字コード(0xFF 0xFE)から始まる時
        + 文字コードが「Unicode」の場合です。
        + 複数ファイルを1つのコピーする時に、2つ目以降のファイルの先頭の文字コード(0xFF 0xFE)をスキップしてコピーします。
    ファイルの先頭2文字が、文字コード(0xFF 0xFE)以外で始まる時
        + ファイルの中に文字コード(0x1A)が登場すると、その文字(0x1A)の手前までをコピーします。
    + その他の時は、素直にファイルをコピーします。
o コピー元ファイルが/B オプション(扱い)の時の動作
    + 素直にファイルをコピーします。

o コピー先ファイルが/A オプション(扱い)の時の動作
    + 文字コードが「Unicode」以外の場合
        + ファイルをコピーした後に、コピー先ファイルの最後に文字コード(0x1A)を追加します。
o コピー先ファイルが/B オプション(扱い)の時の動作
    + ファイルをコピーした後に、文字コードを何も追加しません。


**** メモ
o Windowsのメモ帳の動作は、COPYコマンドの /A とは少し異なります。
    + 文字コード「Unicode」で保存する時の動作は、COPYコマンドの /A と同じです。
        + ファイルの先頭に、文字コード(0xFF 0xFE)を付けます。
    + その他の文字コードで保存する時の動作は、COPYコマンドの /A と異なります。
        + 文字コード「ANSI」 = WIndows版 Shift-JISで保存する時は、
            + ファイルの最後に、文字コード(0x1A)を付けません。
                + COPYコマンドの /B = バイナリファイルと同じ形式です。
            + また、ファイル中に文字コード(0x1A)が含まれていると、小さな矢印のように表示します。
        + 文字コード「Unicode big endian」で保存する時は、
            + ファイルの先頭に、文字コード(0xFE 0xFF)を付けます。
            + ファイルの最後に、文字コード(0x1A)を付けません。
        + 文字コード「UTF-8」で保存する時は、
            + ファイルの先頭に、文字コード(0xEF 0xBB 0xBF)を付けます。
            + ファイルの最後に、文字コード(0x1A)を付けません。
o ファイルを1対1でコピーする時は、オプション無しで問題はありません。
o 一方、複数のファイルを連結して1つのファイルにコピーする時には、問題が起こる場合があります。
    + COPYコマンドは、各ファイルをASCII テキストファイルだと仮定します。
    + ですので、ファイルの文字コードに応じて、/B オプションを使うなどの対応が必要になります。


**** 確認したバージョン
o Windows XP Service Pack 3(32bit) + Windows Update 2011年8月版


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連(▼ABC順)
    ▼Windowsコマンド一覧(▼ABC順)
    ▼コマンドプロンプト画面
    ▼制作メモ
    > DISKCOPY = フロッピーディスクの内容を別のフロッピーディスクにコピーする。途中に質問あり版
    MOVE = ファイルを移動する
    REN = ファイルやフォルダーの名前を変更する
(2011年8月25日変更。大幅加筆と、/Aの動作解釈誤りを訂正)

2011年8月5日金曜日

バッチファイルの処理を途中で終わらせる書き方。EXIT と GOTO :EOF - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。プログラム実行関連 ▲
○Windows XP
バッチファイルの処理を途中で終わらせる書き方は、次の3つがあります。
それぞれ、特徴がありますので、状況に応じて使い分けると便利です。


**** コマンドと用途
o EXIT [ 戻り値 ] = 呼び出し元も含めて、処理を途中で終了する
o EXIT /B [ 戻り値 ] = そのバッチファイルだけ途中で終わらせる
o GOTO :EOF = そのバッチファイルの最後に移動する
(キーワードは、小文字で書く事も出来ます。)

通常は、EXIT や EXIT /Bが便利です。戻り値を書く事も出来ますから。
一方、「GOTO :EOF」の書き方の方が相応しいと思う時もあります。
    + それは、「CALL :ラベル」を使っていて、CALL文に戻る時。
    + EXIT /B を使う事も出来るのですが、なんとなく、終了っぽい書き方をしたくなかったりします。


**** メモ
o 裏技として、PAUSEコマンドを入れておいて、停止した時に「Ctrl + C」「Y」 で終了するというデバッグ技があります。
    + 「Ctrl + C」 = 「Ctrl」キーを押しながら「C」キーを押します。
    + 但し、PAUSEコマンドを外すのを忘れて自動実行してしまうと、後ですごく困ります。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。プログラム実行関連(▼ABC順)
    ▼コマンドを実行する
    ▼コマンドプロンプト画面
    ▼制作メモ
    > バッチファイルのお気軽実行を防ぐ
    ファイルやフォルダーのパスを書いて、エラーになる時の確認点
    バッチファイルで、空白(=スペース)付きの引数(= パラメーター)を扱う方法
    +
    GOTO = 指定したラベルに移動する
    CALL = バッチファイルやラベルを呼び出す
    PAUSE = 処理を一時停止する
    EXIT = 終了する

2011年8月4日木曜日

バッチファイルのお気軽実行を防ぐ方法 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。プログラム実行関連 ▲
○Windows XP
バッチファイルは通常、エクスプローラーのダブルクリックもしくはクリックから簡単実行する事が出来ます。でも、お気軽に実行されると困る場合はありませんか。
そのような時は、バッチファイル先頭での引数チェックが簡単です。うっかりミスの誤操作を防ぐ事が出来ます。

o サブプログラムを含めて1ファイルに収めたい時は、CALLコマンドのラベル付きとGOTOコマンドを使います。


**** 手順
o 実行されると困る側のバッチファイルの先頭で、引数(= パラメーター)のチェックを行います。
o そして、そのバッチファイルを実行する側では、引数を追加して呼び出します。


**** 実行例
o sub.bat
--------
@echo off
if "%~1"== "" exit 999
echo サブプログラムです。
--------

    + キーワードは大文字でも大丈夫です。
    + この例では、何か引数が指定されていた時に、正しい操作だとみなします。
    + 「%~1」は、1つ目の引数から「"」を除去したものです。
        + 詳しくは、「%変数の使い方」
    + 単にスルーさせたい時は「exit 999」の代わりに「exit /b」辺り
    + @echo offを付けると、表示がすっきりします。(= 途中のコマンド文字列を表示しません。)

o main.bat
--------
@echo off
call sub.bat ミクさん
echo 戻ってきました。
--------



**** メモ
o この小技は、バッチファイル以外のプログラムに応用する事も出来ます。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。プログラム実行関連(▼ABC順)
    ▼コマンドを実行する
    ▼コマンドプロンプト画面
    ▼制作メモ
    > ファイルやフォルダーのパスを書いて、エラーになる時の確認点
    バッチファイルで、空白(=スペース)付きの引数(= パラメーター)を扱う方法
    バッチファイルで、ファイルを普通に「開く」方法
(2011年8月5日変更。使用例の説明でgoto :eof から exit /bへ)

2011年7月29日金曜日

環境変数 MORE = MOREコマンドの既定のオプションを指定する - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。画面表示と印刷関連 ▲
Windowsコマンド。制御文と環境変数 <▲
○Windows XP
この環境変数を設定すると、 MORE コマンドのオプションを間接的に指定する事が出来ます。

o 同じオプションをMORE コマンドで直接指定した時は、直接指定したオプションの値が優先されます。


**** 書式
--------
set MORE=オプション
--------

o コマンド名、環境変数名、オプションは、大文字小文字のどちらでも大丈夫です。
o オプション = MORE コマンドで既定にしたいオプションを指定します。
    + オプションを複数並べる時は、間に半角空白を入れます。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 環境変数そのものは、戻り値を更新しません。
o SET コマンドの戻り値をご覧下さい。


**** 使用例
o 連続する空白行を1行にして、タブを4文字の半角空白で置き換えます。
--------
set MORE=/s /t4
--------

    + 大文字小文字のどちらでも大丈夫です。全部、大文字や小文字で書く事も出来ます。


**** 機能
o MORE コマンドは、この環境変数の値を、オプションに自動的に組み込みます。
o 但し、同じオプションをMORE コマンドで直接指定した時は、直接指定したオプションの値が優先されます。
o なお、この環境変数でファイル名を指定する事は出来ません。
    + ファイル名を指定すると、MOREコマンドはエラーメッセージを出して終了します。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。画面表示と印刷関連(▼ABC順)
    ▼Windowsコマンド。制御文と環境変数(▼ABC順)
    ▼Windowsコマンド一覧(▼ABC順)
    ▼コマンドプロンプト画面
    ▼制作メモ
    > ▼Windowsコマンド。時刻関連
    > ▼Windowsコマンド。ヘルプ関連
    +
    MORE = テキストファイルの内容を1画面ずつ表示する

MORE = テキストファイルの内容を1画面ずつ表示する - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。画面表示と印刷関連 ▲
○Windows XP
テキストファイルの内容を、1画面ずつ表示します。

o このコマンドは、環境変数 MORE で指定した値を、オプションとして取り込みます。
    + ですので、予期しない動作をさせたくない時は、環境変数 MOREの値を空にしておく事をおすすめします。


**** 書式
--------
more [オプション] 表示したいファイル名
もしくは
more [オプション] < 表示したいファイル名
もしくは
実行したいコマンド | more [オプション]
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
o オプション = 下記のオプションを、半角空白区切りで並べます。
    + オプションを省略した時は、次のように動きます。
        + 環境変数 MORE の値があれば、オプションとして取り込みます。
        + 拡張機能(/E)は有効です。
        + この拡張機能は、CMDコマンドで拡張機能をOFF(cmd /e:off)にしても有効です。

MORE コマンドのオプション一覧
名前意味
/eこのコマンドの拡張機能を有効にします。
    + CMDコマンドなどの「コマンド拡張機能」とは別物です。
Windows XP Service Pack 3の場合、既定で拡張機能が有効になっています。
/c表示する前に、画面の表示内容を消去します。
/pフォームフィード文字(= 改ページ文字 0x0c)を展開します。
展開すると、ページの下まで空行が入ります。次のページの先頭1行にも空行が入ります。
なお、出力をリダイレクトする時には、このオプションは危険です。
    + ファイルへの出力が途中で止まり、スペースキーを押すなどの操作が必要になります。
/s空白行が複数連続する時に、空白行を1行にまとめます。
/t数字タブ文字を、数字で指定した個数の半角空白に置き換えます。
但し、常に正しい個数に置き換えるのは、数字が 0 か 1 の時だけです。
    + 数字に2を指定した時、連続するタブを置き換えると半角空白が1つ少なくなります。
    + 例えば、タブ2つは半角空白3個に置き換わります。
    + 数字に3以上を指定すると、置き換えるタブは1つ以上減ります。
    + 数字が3の時、タブ1つは半角空白2個、タブ2つは半角空白4個に置き換わります。
+数字最初に表示するファイルのみ、数字で指定した行数分だけスキップします。
先頭行から表示したい時は0、1行スキップなら1です。
指定した数字がファイルの行数を超えた時は、次のファイルの先頭から表示します。

o 表示したいファイル名 = 複数並べて書く事が出来ます。
    + ファイルを複数並べる時は、間に半角空白を入れます。
    + ファイル名に空白文字が入る時は、ファイル名を「"」(= 二重引用符)で括ります。
    + ワイルドカード(「*」や「?」)を指定する事も出来ます。
    + 但し、フォルダーを指定する事は出来ません。
    + UNIX形式のファイル名(「\」の所で「/」を使用)を指定したい時は、リダイレクトで入力します。
        + ファイル名を直接指定する時は、UNIX形式のファイル名を使用する事は出来ません。
o 実行したいコマンド = 任意のコマンドを実行して、その表示内容をこのコマンドに渡す事が出来ます。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = 成功、もしくは書式エラー
    + 「無効なパラメータです - /mikusan」 = 書式が間違っています。
o 1 = ファイルのアクセスエラー
    + 「ファイル C:\ミクさん にアクセスできません」 = フォルダー名では無く、ファイル名を指定して下さい。


**** 機能
o テキストファイルの内容を1画面ずつ表示します。
o 「-- More --」と表示されて止まっている時、コマンド入力を受け付けます。
    + Windows XPの場合、このコマンドの拡張機能は、既に有効になっていました。

「-- More --」で入力出来るコマンドの一覧
名前意味
空白(スペースキー)次のページを表示します。
(Enterキー)次の1行を表示します。
q終了します。
f次のファイルを表示します。
次のファイルが無い時は、終了します。
p 数字数字で指定した行数分だけ、表示します。
「p」と入力すると、数字の入力を促すメッセージを表示します。
s 数字数字で指定した行数分だけ、スキップします。
表示するのは次のページ(= 1画面分)です。
「s」と入力すると、数字の入力を促すメッセージを表示します。
=現在の位置(= 行番号)を表示します。
?「-- More --」で入力出来るコマンドの一覧を表示します。

o このコマンドは、環境変数 MORE で指定した値を、オプションとして取り込みます。
    + 但し、コマンドのオプション指定と重複する時は、コマンドのオプション指定を優先します。

** 仕様外の動作
o /p オプションを指定しない場合は、このコマンドの出力をリダイレクトする事が可能です。
    + 長いファイルを止める事無く、ファイルに出力します。
o /p オプションを指定して、実際に改ページ文字が現れた時は、MOREコマンドはキー入力を待ちます。


**** 使用例
--------
more ミクさんの料理予定.txt ミクさんの料理を最後まで食べる方法.txt

more ミクさんの料理*.txt
dir /b /s *胃腸薬* | more
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + 表示内容が長いと、途中で止まります。ですので、このコマンドは、自動処理には向いていません。


**** メモ
o 以前、TYPEコマンドで表示出来ない、特殊な文字コードが混じっているテキストファイルを、このコマンドを使うと、適当に解釈して表示してくれた事がありました。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼画面表示と印刷関連(▼ABC順)
    ▼Windowsコマンド一覧(▼ABC順)
    ▼コマンドプロンプト画面
    ▼制作メモ
    > CLS = コマンドプロンプト画面の表示内容を消去する
    PROMPT = コマンドプロンプトの表示文字列を変更する
    COLOR = 現在のコマンドプロンプト画面の背景と文字の色を変更する
    +
    TYPE = テキストファイルの内容を表示する
(2011年7月29日追加。/tオプションの詳細動作と、環境変数 MORE)

2011年6月9日木曜日

COMP = ファイルの内容を比較する。最後に質問あり版 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連 ▲
○Windows XP
2つのファイルの内容を比較します。
FCコマンドよりも高速に比較します。そして最後に、他のファイルを比較するかどうか質問します。

o バイナリファイルとして比較します。(= テキストファイルを比較する事も可能です。)
o 大きなファイルの比較も高速です。10バイトの不一致で比較を終えるからです。
o 但し、最後に質問します。ですので、このコマンドは自動処理には向いていません。

o 2つのファイル名に同時にワイルドカード(「*」や「?」)を指定する時は、制限事項があります。FCコマンドと同じ制限です。


**** 書式
--------
comp [オプション] 比較したいファイル名 比較相手のファイル名
公式ヘルプの説明では
comp 比較したいファイル名 比較相手のファイル名 [オプション]
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
o オプション = 下記のオプションを、半角空白区切りで並べます。
    + 公式ヘルプの説明では、ファイル名の指定の後に置くとの事でした。
    + オプションを省略した時は、次のように動きます。
        + バイナリファイルとして比較します。
        + 不一致バイトがある場合は、10バイト分まで表示します。
COMP コマンドのオプション一覧
名前意味
/d不一致バイトの値を、10進数で表示します。
既定では、16進数(= 0-9,A-F)で表示します。
/a不一致バイトの値を、文字で表示します。
ヘルプには「ASCII文字(= 半角の英数字や記号)」とありますが、全角文字も正しく表示されました。
/l
(= /L)
不一致バイトの位置を、行番号で表示します。
既定では、ファイル先頭からのオフセット(= バイト位置)を表示します。
/n=数字ファイルの先頭から指定された行数分だけ比較します。
先頭行が1です。/n=1 と書いた時は、先頭行だけを比較します。
/c英字の大文字と小文字を区別しません。
/off
または /offline
オフライン属性が設定されたファイルも比較します。
このオプションについては、to_dkでは動作確認していません。

o 比較したいファイル名 = このファイルに対して比較を行います。フォルダーを指定する事も出来ます。
    + ワイルドカード(「*」や「?」)を指定する事も出来ます。
    + 対応するファイルが「比較相手のファイル名」から見つからない時は、きっちりエラーになります。
o 比較相手のファイル名 = 指定方法は「比較したいファイル名」と同じです。
    + 両方のファイル名に対してワイルドカードを使う時、上手に比較出来ないパターンがありますので注意します。
    + 詳細は「FCコマンドで、ファイル名のワイルドカードが正しく動かないパターン」
--------
rem 成功するパターン
comp a*.txt b*.txt
comp c:\a\*.txt c:\b\*.txt

rem 失敗するパターン
comp *a.txt *b.txt
comp m*a.txt m*b.txt
--------

    + この他に、ワイルドカードを使って「比較したいファイル名」よりも多くのファイルを指定すると、余ったファイルを無視します。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = ファイル内容の一致
    + 「ファイルに違いはありません」 = 2つのファイルの内容は一致しました。
    + 比較した全てのファイルが一致していた時に 0 になります。
    + 「比較したいファイル名」が不足している場合、エラーになりませんので気を付けます。
o 1 = ファイル内容に相違有り
    + 比較した1つ以上のファイルが相違していた時に 1 になります。
    + 比較相手のファイルが存在しない時は、2 になりますので気を付けます。
    + 「オフセット 393 で比較エラーがあります」 = 相違点を発見しました。
    + 「ファイルが見つからないか、開けません: ネギ.txt」 = 差分表示を途中で止めました。
o 2 = 比較するファイルが開けない時。もしくは書式エラー
    + 「FC: ネギ.TXT を開けません。このファイルまたはフォルダは存在しません」 = 対応する「比較相手のファイル名」のファイルが見つかりませんでした。
    + 「コマンド ラインの構文が正しくありません」 = おそらく指定したオプションが間違っています。


**** 機能
o 2つのファイルの内容を比較します。フォルダーを指定する事も出来ます。
    + ワイルドカード(「*」や「?」)を使用する事も出来ます。但し、書き方に制限事項がありますので注意します。
    + 詳細は「FCコマンドで、ファイル名のワイルドカードが正しく動かないパターン」
o 最初に、比較するファイル名を出力します。「例。ファイル ミクさん.txt と ネギ.TXT を比較しています...」
o 次に、相違点を出力します。
o その後に、比較結果を表示します。
o 最後に、「ほかのファイルを比較しますか (Y/N)?」と質問します。


**** 使用例
--------
comp ミクさん.txt ミクさん.bak

comp /a /l c:\ミクさん\*.txt c:\ミクさんバックアップ\*.txt
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + 最後に質問してきます。ですので、このコマンドは、自動処理には向いていません。


**** メモ
o 文字コードが UTF-8 のファイルも比較出来ます。
    + 但し、Windows XPで比較結果を文字で表示する時(/A)には、比較結果が正しく表示されない事があります。


**** 確認したバージョン
o Windows XP Service Pack 3 -- 但し、to_dk未検証項目あり(= /OFFLINE)


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連(▼ABC順)
    ▼Windowsコマンド一覧(▼ABC順)
    ▼コマンドプロンプト画面
    ▼制作メモ
    > DISKCOMP = フロッピーディスクの内容を比較する。途中に質問あり版
    SORT = ファイルの内容やコマンド出力結果を並べ替えて表示する
    COPY = ファイルをコピーする
    +
    FCコマンドで、ファイル名のワイルドカードが正しく動かないパターン

2011年6月8日水曜日

FC = ファイルの内容を比較して、それらの違いを表示する - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。ファイルとフォルダー関連 ▲
○Windows XP
2つのファイルの内容を比較します。

o 2つのファイル名に同時にワイルドカード(「*」や「?」)を指定する時は、制限事項があります。
o バイナリファイルの比較をする事も出来ます。但し、大きなファイルの比較には向いていません。


**** 書式
--------
fc [オプション] 比較したいファイル名 比較相手のファイル名
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
o オプション = 下記のオプションを、半角空白区切りで並べます。
    + オプションを省略した時は、次のように動きます。
        + 不一致行と、前後1行を表示します。
        + テキストファイルとして比較します。
        + タブを空白に置き換えたりはしません。
        + 日本語版の場合、文字コードShift JIS (cp932)で比較します。
FC コマンドのオプション一覧
名前意味
/bバイナリモードで比較します。
長い方のファイルを基準にして、不一致バイトを全部表示します。
テキストファイル用のオプションを一緒に指定しても、それらのオプションを無視します。
/n左側に行番号を表示します。不一致行がある時に、一緒に表示します。
/a不一致行が連続している時に、表示する行数を減らします。
次のどちらかの形式で表示します。
o 連続する不一致行を「...」1行に置き換え、不一致行の前後の1行と共に表示します。
o もしくは、連続する不一致行の内1行と、不一致行の前後の1行を表示します。
/c英字の大文字と小文字を区別しません。
/l
(= /L)
ファイルを ASCII テキストとして比較します。
とヘルプにはありますが、オプション無しと変わらないみたいです。
文字コード Shift-JISのWindows仕様(= cp932)で読み込みます。
/lb数字
(= /LB数字)
比較を途中で止める時の、連続不一致行数を指定します。
指定した値よりも不一致行が多いと、ファイルを最後まで比較するのを止めて、メッセージを出します。「再同期に失敗しました。ファイルが著しく異なります。」
/off
または /offline
オフライン属性が設定されたファイルも比較します。
このオプションについては、to_dkでは動作確認していません。
/tタブを空白に変換せずに比較します。
/w と併用した時に効果があります。
/uUnicodeのテキストファイルとして比較します。
/w連続した空白 (タブと半角空白) を 1 つの空白に圧縮して比較します。
/数字一致行の判定で使います。不一致行の直後に並ぶ連続一致行数を指定します。
この行数未満で不一致行が再び現れた時は、それまでに一致した行も不一致行として扱います。

o 比較したいファイル名 = このファイルに対して比較を行います。
    + ワイルドカード(「*」や「?」)を指定する事も出来ます。
    + フォルダーを指定する事は出来ませんので、c:\ミクさん\* のように指定します。
    + 対応するファイルが「比較相手のファイル名」から見つからない時は、きっちりエラーになります。
o 比較相手のファイル名 = 指定方法は「比較したいファイル名」と同じです。
    + 両方のファイル名に対してワイルドカードを使う時、上手に比較出来ないパターンがありますので注意します。
    + 詳細は「FCコマンドで、ファイル名のワイルドカードが正しく動かないパターン」
--------
rem 成功するパターン
fc a*.txt b*.txt
fc c:\a\*.txt c:\b\*.txt

rem 失敗するパターン
fc *a.txt *b.txt
fc m*a.txt m*b.txt
--------

    + この他に、ワイルドカードを使って「比較したいファイル名」よりも多くのファイルを指定すると、余ったファイルを無視します。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = ファイル内容の一致
    + 「FC: 相違点は検出されませんでした」 = 2つのファイルの内容は一致しました。
    + 比較した全てのファイルが一致していた時に 0になります。
    + 「比較したいファイル名」が不足している場合、エラーになりませんので気を付けます。
o 1 = ファイル内容に相違有り
    + 比較した1つ以上のファイルが相違していた時に 1になります。
    + 「FC: ファイル1 は ファイル2 より長いファイルです」 = ファイルの長さが異なります。
        + /B指定時など、比較結果を表示出来ない時に出てくるみたいです。
    + 「FC: ミクさん.TXT を開けません。このファイルまたはフォルダは存在しません」 = 「比較相手のファイル名」が見つかりませんでした。
    + 「再同期に失敗しました。ファイルが著しく異なります。」 = 差分表示を途中で止めました。
        + このメッセージは、/LB数字 オプション専用です。
o 2 = 書式エラー
    + 「FC: ネギ.TXT を開けません。このファイルまたはフォルダは存在しません」 = 指定したファイルが見つかりませんでした。


**** 機能
o 2つのファイルの内容を比較します。
    + ワイルドカード(「*」や「?」)を使用する事も出来ます。但し、書き方に制限事項がありますので注意します。
    + 詳細は「FCコマンドで、ファイル名のワイルドカードが正しく動かないパターン」
o 最初に、比較するファイル名を出力します。「例。ファイル ミクさん.txt と ネギ.TXT を比較しています」
o 次に、相違点を出力します。
o /B(= バイナリモード)指定時、次のように動作します。
    + 2つのファイルの長さが異なっていると、全行異なるものとして扱います。
    + 相違する文字のみ表示します。
o テキストモード(= /Bを指定しない)の時、次のように動作します。
    + 何もオプションを指定しない時は、不一致行と、その前後1行を表示します。
    + 不一致行の判定方法や表示方法は、オプションで変更する事が出来ます。
o 長さが異なると、最後に説明文を出力します。「例。FC: ミクさん.TXT は ネギ.txt より長いファイルです」

**** 使用例
--------
fc ミクさん.txt ミクさん.bak

fc /c c:\ミクさん\*.txt c:\ミクさんバックアップ\*.txt
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。


**** メモ
o 文字コードが UTF-8 のファイルも比較出来るみたいです。
    + 但し、Windows XPでは、比較結果の内、漢字などが文字化けします。
    + 比較結果を目視で確認する時は、行番号を表示(= /N)する事をおすすめします。


**** 確認したバージョン
o Windows XP Service Pack 3 -- 但し、to_dk未検証項目あり(= /OFFLINE)


==
関連ページ:
    ▼Windowsコマンド。ファイルとフォルダー関連(▼ABC順)
    ▼Windowsコマンド一覧(▼ABC順)
    ▼コマンドプロンプト画面
    ▼制作メモ
    > COMP = ファイルの内容を比較する。最後に質問あり版
    DISKCOMP = フロッピーディスクの内容を比較する。途中に質問あり版
    SORT = ファイルの内容やコマンド出力結果を並べ替えて表示する
(2011年8月22日追加。戻り値欄にて、メッセージを1つ追加)