(for Internet Explorer)
→ www.confrage.com コマンドプロンプト★(cache)
バッチファイルのパラメータは %1, %2 ... で参照します。
"" で囲んだパスは %1="c:\file.txt" になるので、
バッチファイルの中では、"%1" ではなく %1 と記述します。
%1="c:\file.txt" なら %~1=c:\file.txt です。
参考
→ find (UNIX)
ここで書かれているものは、Windows 2000/Xp 以降専用のものがあります。
(新規バッチ)
、ショートカット ファイル、バッチ ファイル、コマンドライン シェル、
シェル スクリプトなどに指定する、何かの処理(コマンド)を実行するために入力する 1行の
文字列を、コマンドラインと呼びます。
サンプル
copy a.txt b.txt
参考
コマンド名 = copy、第1引数 = a.txt、第2引数 = b.txt
ファイル a.txt の内容を、ファイル b.txt にコピーします。
コメント
REM  comment
copy a.txt b.txt &REM comment
& は複数のコマンドの区切り
REM の行に & を書いても、次のコマンドにはなりません。
REM  comment & pause
… pause は実行されません
複数コマンド、複数行
copy a.txt b.txt & copy c.txt d.txt
copy a.txt ^
    b.txt
1行に複数のコマンド
複数行に1つのコマンド
Windows XP コマンド インタープリタの新しいインスタンスを開始します。

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
    [[/S] [/C | /K] 文字列]

/C      "文字列" に指定されたコマンドを実行した後、終了します。
/K      "文字列" に指定されたコマンドを実行しますが、終了しません。
/S      /C または /K の後の文字列の扱いを変更します (以下の説明を参照してくだ
        さい)。
/Q      エコーをオフにします。
/D      レジストリからの AutoRun コマンドの実行を無効にします
        (下記を参照してください)。
/A      内部コマンドの出力結果を ANSI でパイプまたはファイルに出力します。
/U      内部コマンドの出力結果を Unicode でパイプまたはファイルに出力します。
/T:fg   前景色および背景色を設定します (詳細は COLOR /? を参照してください)。
        例 /T:70 … 背景は灰、文字は黒、0〜F=XRGB(2)
/E:ON   コマンド拡張機能を有効にします (以下の説明を参照してください)。
/E:OFF  コマンド拡張機能を無効にします (以下の説明を参照してください)。
/F:ON   ファイル名およびディレクトリ名補完文字を有効にします
        (以下の説明を参照してください)。
/F:OFF  ファイルおよびディレクトリ名補完文字を無効にします
        (以下の説明を参照してください)。
/V:ON   区切り文字として ! を使って遅延環境変数の展開を有効にします。
        たとえば、 /V:ON とすると、!var! は、実行時に変数 var を展開します。
        var 構文は、FOR ループ中とは違い、入力時に変数を展開します。
/V:OFF  遅延環境展開を無効にします。

コマンド セパレータ '&&' で区切られた複数のコマンドが引用符で囲まれている場合
は、"文字列" として指定されます。また互換性の理由から /X と /E:ON、/Y と
/E:OFF、および /R と /C は同じです。そのほかのスイッチは無視されます。
cmd.exe の /? オプションより
コマンドプロンプトの実行ファイルは、cmd.exe です。 %system32% に入ってます。
オプションを付けることで、環境を設定したプロンプトを起動できます。
→ [00037467](SET)] コンソールプログラムでUNICODEを使うには?.mht
FileX_fgetws_w, FileX_fputws_w
コマンドプロンプト
(新規バッチ)
64ビット cmd.exe
64ビットWindows
32ビットWindows
32ビット cmd.exe
%windir%\System32\cmd.exe
%windir%\SysWOW64\cmd.exe
%windir%\System32\cmd.exe
-
→ 標準入出力
コマンドライン用の実行ファイルを直接起動すると、右クリックしてもメニューが表示されません。
ただし、同じ内容のメニューは、タイトル バーを右クリック [ 編集 ] で表示できます。
Windows 10 64bit では、コマンド プロンプトから起動しても、右クリックのメニューが表示され
ません。 ただし、上記のショートカット(Ctrl+M など)は使えます。
コマンド プロンプトの左上のアイコンをクリック [ 既定値 >> 簡易編集モード ] にチェックを入れると、
コピーと貼り付けだけは、マウスだけでできるようになります。
コマンド プロンプトから起動すると、右クリックしてすぐにメニューが表示されます。
参考
exe ファイルを起動するとき、exe ファイル名だけ(フォルダーのパスなし)で
起動できるようにします。
PATH 環境変数に追加する
set Path=C:\Folder;%PA%H%
PATH 環境変数に C:\Folder を追加する。 "" で囲まないこと。
参考
/C または /K が指定されている場合、スイッチの後の残りのコマンド ラインがコマ
ンド ラインとして処理されます。次のルールが引用符 (") の処理に使われます:

    1.  次のすべての条件に一致する場合、コマンド ラインの引用符が有効になり
        ます:

        - /S スイッチがない
        - 引用符が 1 組ある
        - 引用符の中に特殊文字がない
          (特殊文字は &<>()@^| です)
        - 引用符の中に 1 つ以上のスペースがある
        - 引用符の中の文字列が、実行可能ファイルの名前である

    2.  最初の文字が引用符であるにも関わらず上の条件に一致しない場合は、最初
        の引用符とコマンド ラインの最後の引用符が削除され、最後の引用符のあ
        とのテキストが有効になります。
cmd.exe の /? オプションより
cmd.exe /K (set Z=1)
環境変数 Z を 1 にしたコマンドプロンプトを開きます。
( ) で囲む必要がないかも知れません。
@echo off
if "%~1"=="" cmd /K (%0 /wnd %1 %2 %3 %4)
shift
バッチファイルの先頭を次のようにすると、
ダブルクリックして始めたバッチファイルが終わっても自動的に閉じません。
cmd を実行しても、新しいコマンドプロンプトを作ろうとはしないで、現在のコマンドプロンプトで、
バッチファイルの実行を再度最初から行います。 このため、2回実行することはありません。
@echo on とすると、その様子を確認できます。
exit
バッチファイルに exit 命令があると、コマンドプロンプトは閉じます。
関連
自動的にとじるときは、/C オプションを指定します。
コマンドプロンプトからコマンドラインを入力するとき、コマンド名(実行ファイル名)と
引数の間や、引数と引数の間は、空白文字で区切ってください。
copy a.txt b.txt
コマンド名 = copy、第1引数 = a.txt、第2引数 = b.txt
ファイル a.txt の内容を、ファイル b.txt にコピーします。
(以後、コマンド名と引数の両方を、パラメーターと呼びます。)
パラメーターに空白文字が含まれるときは、" " で囲んでください。
"C:\Program Files\Internet Explorer\iexplore.exe"
実行ファイル名のみ
参考
findstr /R "\"string\"" C:\file.txt
ダブル・クォーテーション文字を指定するときは、\" と指定してください。
findstr /R \\string \\pc01\pub\*
\ の後に、0個以上の \ があり、直後に " があるときは、エスケープします。
(cache)
\\"
通常文字 \ と、特殊文字 "
通常文字 \ と、通常文字 "
\\\"
1個以上の \ の後に " が無いときは、エスケープしません。
\\
通常文字 \\
\\pc01
通常文字 \\pc01
\folder
通常文字 \folder
findstr コマンドに検索キーワードを指定するとき、\ のエスケープ処理は、
コマンドラインではなく findstr の内部で行われます。
findstr の内部で、\\string を \string に変換してキーワードとします。
コマンドプロンプトのエスケープ文字は ^ です。
^%windir^%
通常文字 %windir%。 環境変数の展開はしない。
GNOME 端末は、\" だけでなく \\ も \ にエスケープします。 それ以外(\' など)
は、\ を通常文字とします。 さらに grep であれば、grepの中でもエスケープします。
grep "\\\\pc01" a.txt
findstr /R /C:"\\pc01" a.txt
"\pc01" を検索します
"\\pc01" を検索します
grep "\\\'pc01" a.txt
"\\'pc01" を検索します
関連
→ コマンドラインの引数とエスケープ (xterm)
echo ^>
> を表示する(リダイレクトではなくなる)
\"
通常文字 "
コマンド ラインで /D が指定されなかった場合は、CMD.EXE の開始時に次の REG_SZ
または REG_EXPAND_SZ レジストリ変数が検索されます。次のレジストリ変数の両方ま
たはどちらかが存在する場合、それらを最初に実行します。

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
ワイルドカード
*
存在するファイルやフォルダーの名前の、任意の文字列にヒットします。
?
存在するファイルやフォルダーの名前の、任意の1文字にヒットします。
>dir *.txt
file1.txt
file2.txt
file3.txt
サンプル
短い名前とワイルドカード
>dir
a_target5.txt

>dir *1.txt
a_target5.txt

>dir /x
A_TARG~1.TXT a_target5.txt
ワイルドカードは、ファイルやフォルダーの名前に対応して自動的に付けられる
8.3 形式の短い名前にもヒットします。 つまり、*1.txt というワイルドカードは、
短い名前の最後によくつく ~1.txt にヒットします。
PowerShell ではヒットしません。
既定では、コマンド拡張機能は有効です。拡張機能を無効にして CMD.EXE を起動する
には、/E:OFF スイッチを使用します。コンピュータまたはユーザー ログオン セッ
ションで起動される CMD.EXE コマンドすべてに対して拡張機能を有効または無効に
するには、 REGEDIT32.EXE を使ってレジストリにある次の REG_DWORD 値を設定しま
す。
コンピュータに対しては、

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions

に 0x1 を設定すると有効になり、0x0 を設定すると無効になります。
ログオン セッションに対しては、

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions

に 0x1 を設定すると有効になり、 0x0 を設定すると無効になります。
ユーザー固有の設定は、コンピュータの設定より優先されます。
コマンド ライン スイッチは、レジストリの設定より優先されます。

コマンド拡張機能には、次のコマンドに対する変更または追加が含まれています。

    DEL または ERASE
    COLOR
    CD または CHDIR
    MD または MKDIR
    PROMPT
    PUSHD
    POPD
    SET
    SETLOCAL
    ENDLOCAL
    IF
    FOR
    CALL
    SHIFT
    GOTO
    START (外部コマンドの起動の変更を含みます)
    ASSOC
    FTYPE

詳細は、コマンド名の後に /? と入力すると表示されるヘルプを参照してください。
cmd.exe の /? オプションより
ユーザーごとのファイル、ドキュメント、ピクチャ、各種設定値など
例: C:\Users\user1
コンピューター名
例: pc01
関連
既定では、遅延環境変数の展開は有効ではありません。遅延環境変数の展開を有効また
は無効にして CMD.EXE を起動するには、/V:ON または /V:OFF スイッチを使います。
コンピュータまたはログオン セッションで起動される CMD.EXE コマンドすべてに対し
て補完を有効または無効にするには、REGEDIT32.EXE を使ってレジストリにある次の
REG_DWORD 値を設定します。
コンピュータに対しては、

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion

に 0x1 を設定すると有効になり、0x0 を設定すると無効になります。
ユーザー ログオン セッションに対しては、

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion

に 0x1 を設定すると有効になり、0x0 を設定すると無効になります。
ユーザー固有の設定は、コンピュータの設定より優先されます。
コマンド ライン スイッチは、レジストリの設定より優先されます。

遅延環境変数の展開が有効になっている場合、感嘆符を使うと実行時に環境変数の
値を置き換えることができます。
cmd.exe の /? オプションより
最後に、遅延環境変数の展開が追加されました。このサポートは常に既定で
無効になっていますが、CMD.EXE の /V: のコマンド ライン スイッチを使
って有効または無効にできます。CMD /? を参照してください。

遅延環境変数の展開は、実行時ではなく、テキスト行を読み取るときに展開
されるという現在の制限を避けるために役立ちます。
次の例は即時変数展開の問題を説明しています。

    set VAR=before
    if "%VAR%" == "before" (
        set VAR=after;
        if "%VAR%" == "after" @echo If you see this, it worked
    )

この例は、論理的には IF 文が別の IF 文の本体に含まれる複合文なので、
両方の IF 文の %VAR% が、最初の IF 文を読み取ったときに展開されます。
このため、メッセージは決して表示されません。複合文の中の IF では "before"
と "after" が比較され、決して等しくはなりません。同様に次の例も期待し
たようには動作しません。

    set LIST=
    for %i in (*) do set LIST=%LIST% %i
    echo %LIST%

この例では、現在のディレクトリのファイルの一覧は作成されず、代わりに最後
に見つけられたファイルが LIST 変数に設定されます。これは %LIST% が FOR 文
が読み取られるとき、一度だけ展開され、そのときは LIST 変数は、空だからです。
つまり、実際に実行されている FOR ループは

    for %i in (*) do set LIST= %i

で、LIST に最後にみつけられたファイルを設定し続けているだけです。

遅延環境変数の展開では、実行時に環境変数を展開するために異なった文字
(感嘆符)を使うことができます。遅延環境変数の展開が有効な場合、上記の
例は次のように書くと意図したように動作します。

    set VAR=before
    if "%VAR%" == "before" (
        set VAR=after
        if "!VAR!" == "after" @echo If you see this, it worked
    )

    set LIST=
    for %i in (*) do set LIST=!LIST! %i
    echo %LIST%
set の /? オプションより
cmd.exe を /V:ON オプションをつけて起動し、% % の代わりに ! ! を使って
環境変数を参照すると、for ( ) や if ( ) の複文を実行する前ではなく、
単文を実行するたびに、環境変数の値を展開します。

ファイルパスに ! が入っていると、正しく動作しません。
既定では、ファイルおよびディレクトリ名補完機能は有効ではありません。ファイル
名の補完機能を有効または無効にして CMD.EXE を起動するには、/F:ON または /F:OFF
スイッチを使います。コンピュータまたはログオン セッションで起動される CMD.EXE
コマンドすべてに対して補完機能を有効または無効にするには、REGEDIT32.EXE を使っ
てレジストリにある次の REG_DWORD 値を設定します。
コンピュータに対しては、

  HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar
  HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar

に特定の機能に使う 16 進の制御文字を設定します (例 0x4 は Ctrl-D、0x6 は
Ctrl-F)。
ユーザー ログオン セッションに対しては、

  HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar
  HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar

に特定の機能に使う 16 進の制御文字を指定します (例: 0x4 は Ctrl-D、0x6 は
Ctrl-F)。
ユーザー固有の設定は、コンピュータの設定より優先されます。
コマンド ライン スイッチは、レジストリの設定より優先されます。

/F:ON スイッチで補完機能を有効にした場合、2 つの制御文字 (Ctrl-D はディレクト
リ名補完機能、Ctrl-F はファイル名補完機能) が使用されます。
レジストリで特定の補完文字を無効にするには、制御文字として有効でないスペース
(0x20) の値を使用します。

2 つの制御文字のどちらかを入力すると、補完機能が起動されます。パスが存在しな
い場合、プログラムはカーソルの左側のパス文字列にワイルド カード文字を付加し、
一致するパスの一覧を作成します。その後一致する最初のパスを表示します。
パスが一致しない場合、音を鳴らします。同じ制御文字を押し続けると一致するパス
の一覧を順に表示します。Shift キーを押しながら制御文字を押すと一覧を逆回り表
示します。行を編集して制御文字をもう一度押すと、保存されていた一致したパスの
一覧は破棄され、新しい一覧が作成されます。ファイル名補完機能とディレクトリ名
補完機能を切り替えたときも同様です。2 つの制御文字の違いは、ディレクトリ補完
文字がディレクトリ名だけを照合するのに対し、ファイル名補完文字はファイルと
ディレクトリ名の両方を照合する点です。ファイル補完機能が内部ディレクトリコマ
ンド (CD、MD または RD) に使用された場合、ディレクトリ補完機能と見なされま
す。

一致するパスの前後に引用符を付けると、補完機能コードでスペースまたはほかの特
別な文字を含むファイル名が使用できるようになります。また、行の前に戻って補完
機能を起動した場合、補完機能が呼び出された時点でカーソルの右側にあったテキス
トは破棄されます。

引用符が必要な特別な文字は次のとおりです:
     <スペース>
     &()[]{}^=;!'+,`~
cmd.exe の /? オプションより
別のユーザとしてコマンドを実行するときは、コマンドプロンプトへのショーカットを右クリックして、
「別のユーザとして実行」 して起動したコマンドプロンプトで実行してください。
ただし、パスワードが設定されているユーザしか実行できません。
/savecred         ユーザーが以前に保存した資格情報を使います。
                     このオプションは Windows XP Home Edition では利用できない
                     ので無視されます。
/smartcard        資格情報がスマート カードから提供される場合
Windows Vista の「管理者として実行」
ShellExecute の Verb="runas" として起動すると、右クリックして「管理者として実行」と
同じ動きになります。
関連
→ runas_src.zip
C言語で (作成中)
セキュリティのためか、runas を実行するまでにキーボードが入力されていたり、クリップボード
からパスワードを貼り付けようとすると、実行開始に失敗します。
1327: ログオン失敗: ユーザー アカウントの制限。考えられる理由として、空のパスワ
ードが許可されていない、ログオン時間制限、またはポリシーによる制限が適用された、
などが挙げられます。
パスワードの有効期限が切れている可能性があります。
(スタート > ユーザーの切り替え からログオンしようとすると原因が分かります)
→ コマンドプロンプトの Unicode 文字
>chcp
現在のコード ページ: 932
参考
932 は、Japanese Shift-JIS です。
65001 は、UTF-8 です。
おそらく、コマンドプロンプトが開いていたら、HTML ページのスクリプトで、
マウスを自動操作して、コマンドプロンプトにドロップして、悪意のあるスクリプト
を起動させるから。
対策の対策
コマンドプロンプトへドラッグ&ドロップして、パスを入力する方法が使えなく
なったので、代わりに下記のように操作します。

1. ファイルを、シフトキーを押しながら右クリックして、[ パスとしてコピー ]
2. コマンドプロンプトを右クリックして、[貼り付け]