全般/環境変数
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#navi(全般)
''環境変数について''
#contents
/////////////////////////////////////////////////////////...
*隠し環境変数 [#z04be748]
set "" を実行すると、set を実行したときに加えて、= で始ま...
:%=ExitCode%|直近に実行した外部コマンドの終了コード。外部...
内部コマンドの実行によって ERRORLEVEL が変化しても影響は...
:%=C:%|Cドライブのカレントディレクトリ。%=D:% 等も同様。
そのドライブにカレントディレクトリを移動したことが無けれ...
そのドライブレターに対応する変数は存在しない。
/////////////////////////////////////////////////////////...
*ERRORLEVELの値セット [#ia768186]
ERRORLEVELの値はsetで変更できないので、任意の値にセットす...
echo exit /b 値 > tmp.bat
call tmp.bat
のように、exit を含んだ一時バッチファイルを作る必要がある。
ただし、多くの場合はゼロか非ゼロにセットできれば十分だろ...
いくつかの内部コマンドは ERRORLEVEL の値を変更するので、
副作用が無く ERRORLEVEL に影響する内部コマンドを利用する。
メッセージが出る場合があるので、NUL にリダイレクトする。
cd . → 0 にセット
md . 2>NUL → 1 にセット
ver >NUL → 0 にセット
verify >NUL → 0 にセット
verify X 2>NUL → 1 にセット
setlocal /? には、verify other で 1 にセットする例がある。
/////////////////////////////////////////////////////////...
*環境変数への改行文字のセット [#i2dc5166]
環境変数へ改行文字をセットすることが出来る。
ただし、参照を % で行うと改行文字の後ろは無視される。
そのため遅延展開を有効にして、! で参照する必要がある。
setlocal enabledelayedexpansion
set AAA=ABCDEFG^
[空行]
HIJKLMN
echo !AAA! → ABCDEFG 改行 HIJKLMN が表示さ...
[空行]と書いた部分は本当の空行にする。
なお、この方法でセットされる改行文字は CRLF ではなくて、L...
部分文字列参照を行う際には改行文字を1文字としてカウントす...
setlocal enabledelayedexpansion
set AAA=
for /f "delims=" %%A in (filename) do (
set AAA=!AAA!^
[空行]
%%A
)
echo !AAA!
のようにファイルの内容を1つの環境変数にセットすることも出...
最初に、「%で参照すると改行以降が切れる」と書いたが、( ) ...
改行以降も有効に出来る。
set AAA=echo ABC^
[空行]
echo DEF
%ABC% → ABC が表示される
(%ABC%) → ABC 改行 DEF が表示される
/////////////////////////////////////////////////////////...
*「遅延環境変数」とは? [#u2b691a2]
一部誤解されている向きがあるが、一般の環境変数と別に「遅...
あるわけではない。環境変数というものはあくまで一種類で、
展開の仕方が % によるものと ! によるものと二通りあるだけ...
% による展開は構文解析時に、! による展開はコマンド実行の...
set /? を注意深く読むと気づくが、「遅延環境変数」という言...
必ず「遅延環境変数の展開」という言葉として現れている。~
対応する原語は、「Delayed environment variable expansion...
これは「環境変数の遅延展開」と訳すべきであったろう。
/////////////////////////////////////////////////////////...
#navi(全般)
終了行:
#navi(全般)
''環境変数について''
#contents
/////////////////////////////////////////////////////////...
*隠し環境変数 [#z04be748]
set "" を実行すると、set を実行したときに加えて、= で始ま...
:%=ExitCode%|直近に実行した外部コマンドの終了コード。外部...
内部コマンドの実行によって ERRORLEVEL が変化しても影響は...
:%=C:%|Cドライブのカレントディレクトリ。%=D:% 等も同様。
そのドライブにカレントディレクトリを移動したことが無けれ...
そのドライブレターに対応する変数は存在しない。
/////////////////////////////////////////////////////////...
*ERRORLEVELの値セット [#ia768186]
ERRORLEVELの値はsetで変更できないので、任意の値にセットす...
echo exit /b 値 > tmp.bat
call tmp.bat
のように、exit を含んだ一時バッチファイルを作る必要がある。
ただし、多くの場合はゼロか非ゼロにセットできれば十分だろ...
いくつかの内部コマンドは ERRORLEVEL の値を変更するので、
副作用が無く ERRORLEVEL に影響する内部コマンドを利用する。
メッセージが出る場合があるので、NUL にリダイレクトする。
cd . → 0 にセット
md . 2>NUL → 1 にセット
ver >NUL → 0 にセット
verify >NUL → 0 にセット
verify X 2>NUL → 1 にセット
setlocal /? には、verify other で 1 にセットする例がある。
/////////////////////////////////////////////////////////...
*環境変数への改行文字のセット [#i2dc5166]
環境変数へ改行文字をセットすることが出来る。
ただし、参照を % で行うと改行文字の後ろは無視される。
そのため遅延展開を有効にして、! で参照する必要がある。
setlocal enabledelayedexpansion
set AAA=ABCDEFG^
[空行]
HIJKLMN
echo !AAA! → ABCDEFG 改行 HIJKLMN が表示さ...
[空行]と書いた部分は本当の空行にする。
なお、この方法でセットされる改行文字は CRLF ではなくて、L...
部分文字列参照を行う際には改行文字を1文字としてカウントす...
setlocal enabledelayedexpansion
set AAA=
for /f "delims=" %%A in (filename) do (
set AAA=!AAA!^
[空行]
%%A
)
echo !AAA!
のようにファイルの内容を1つの環境変数にセットすることも出...
最初に、「%で参照すると改行以降が切れる」と書いたが、( ) ...
改行以降も有効に出来る。
set AAA=echo ABC^
[空行]
echo DEF
%ABC% → ABC が表示される
(%ABC%) → ABC 改行 DEF が表示される
/////////////////////////////////////////////////////////...
*「遅延環境変数」とは? [#u2b691a2]
一部誤解されている向きがあるが、一般の環境変数と別に「遅...
あるわけではない。環境変数というものはあくまで一種類で、
展開の仕方が % によるものと ! によるものと二通りあるだけ...
% による展開は構文解析時に、! による展開はコマンド実行の...
set /? を注意深く読むと気づくが、「遅延環境変数」という言...
必ず「遅延環境変数の展開」という言葉として現れている。~
対応する原語は、「Delayed environment variable expansion...
これは「環境変数の遅延展開」と訳すべきであったろう。
/////////////////////////////////////////////////////////...
#navi(全般)
ページ名: