コマンド別/set
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#navi(コマンド別)
#contents
/////////////////////////////////////////////////////////...
*set /a リーディングゼロの対処 [#d522de6d]
set /a の算術式の中で、0010 のようにゼロで始まる値は8進数...
-リーディングゼロがある場合
set A=0028
set /a B=%A%+1 → 無効な数字。というエラーになる
set /a C=A+1 → 8が非数字、Aは002という値と見な...
3行目のようにエラーにならないで意図しない結果となるケース...
**対処方法 [#wa794801]
-桁数固定の場合
set A=08
set B=0010
set /a A=1%A%-100
set /a B=1%B%-10000
set M=「2桁の数字」
if 1%M% gtr 112 (Mが12を超える場合の処理)
-リーディングゼロの有無が不明の場合(キーインデータなど)
set A=「10000未満の数字でリーディングゼロの有無は不明」
set /a A=1000%A% %% 10000
/////////////////////////////////////////////////////////...
*set /a の単項演算子 [#wf15332e]
WinXPでは、set /? で単項演算子 ! ~ - の説明があるが、Win2...
説明が無い。しかし、実際にはWin2000でもこれらは使える。
意味については説明が無いが、C と同じく、論理NOT、ビットNO...
/////////////////////////////////////////////////////////...
*set /a 特殊記号の演算子 [#a9da562b]
set /a 文で使える演算子のうち、<< >> & | ^ は、特殊文字な...
クォートするか、" " で囲む必要がある。あるいは、
set /a N="1 << 2"
set /a "N=1 << 2"
のように式全体を " " で囲んでも良い。
% はバッチスクリプト内では %% と書く。
! は遅延展開が無効な場合は特殊文字ではないのでそのままで...
有効な場合は特殊文字となるので ^^ でクォートする必要があ...
遅延展開が無効な場合は ^! となるのでエラーとなる。~
また、^ は遅延展開が無効な場合でも有効な場合でも ^^ でよ...
遅延展開が有効で ^ と ! が同じ行にあるときは ^ は ^^ でな...
! があるときは遅延展開が有効か無効かによって書き方を変え...
set /a N=!X → OK ( not X )
set /a N=^^!X → エラー
set /a N=X^^!Y → OK ( X xor not Y )
setlocal enabledelayedexpansion
set /a N=!X → ! が空に置換されるので、N=X と...
set /a N=^^!X → OK ( not X )
set /a N=X^^!Y → X!Y となってエラー
set /a N=X^^^^!Y → X^Y となる。!は空に置換される
set /a N=X^^^^^^!Y → OK ( X xor not Y )
( ) = ~ + - * / は、特殊文字ではないのでそのままで良い。
ただし、) は、set /a 文が ( ) の中の場合は特殊文字となる...
^ か " " でクォートする必要がある。
set /a N=(1+2)*3 → OK
(set /a N=(1+2)*3) → エラー
(set /a N=(1+2^)*3) → OK
(set /a N="(1+2)*3") → OK
set /a N=(1+2^)*3 → OK
/////////////////////////////////////////////////////////...
*set /p 入力結果の確認 [#if59e8dd]
空入力の時、変数には空がセットされる(未定義になる)のでは...
set ANSWER=Y
set /p ANSWER=Enter(Y/N) [Y]?
のようにデフォルト値の設定を想定した機能であろう。空入力...
set ANSWER=
set /p ANSWER=Enter Name:
のようにあらかじめ未定義にしておく必要がある。
ERRORLEVELは、空入力の時に1になる。しかし、空以外の入力の...
従って、空入力の判断にERRORLEVELを使うためには、あらかじ...
set VAR=
cd . %ERRORLEVEL を 0 にセットする%
set /p VAR=Enter:
if ERRORLEVEL 1 echo 空入力だった
set VAR=
set /p VAR=Enter:
if not defined VAR echo 空入力だった
後者のほうがわかりやすい。~
変数をあらかじめ空にするのでなく何らかのデフォルト値を入...
デフォルト値のままである事を確認するのなら前者の方法を取...
/////////////////////////////////////////////////////////...
*set /p による改行なしの文字列表示 [#ccf34f3c]
set /p のプロンプト文字列表示機能を使って、echo と違って...
set /p DMY=abcdefg<NUL
set /p <NUL DMY=abcdefg
また、変数の値はどうせ使わないので変数名は省略してもかま...
set /p <NUL="abcdefg>"
/////////////////////////////////////////////////////////...
*文末の空白 [#faa0faa6]
set を & を使ってマルチステートメントで記述する際、
set A=abc & set B=def
のように & の前に空白を置くと、Aには abc ではなく、abc空...
これを避けるためには、
set A=abc& set B=def
のように & の前に空白を置いてはいけない。または、" " で囲...
set "A=abc" & set "B=def"
ならば空白は含まない文字列がセットされる。
& だけでなく、) や && 、|| の前も同じ。
/////////////////////////////////////////////////////////...
*変数名の空白 [#ye877c71]
環境変数名には先頭でなければ空白も使用可能である。
set VAR = 123
とすると、「V」「A」「R」「空白」が環境変数名となり、
%VAR % の値が 「 123」となる。~
このようにイコールの前後の空白も意味を持つので注意が必要。
/////////////////////////////////////////////////////////...
*set "VAR=%A%" [#d6827095]
環境変数Aの値に < > & | 等の特殊文字を含む場合は、
set VAR=%A%
では、値をセットできない。特殊文字を含んでいても " を含ん...
set "VAR=%A%"
と、全体を " " で囲むことで安全に値をセットできる。前項も...
/////////////////////////////////////////////////////////...
/////////////////////////////////////////////////////////...
#navi(コマンド別)
終了行:
#navi(コマンド別)
#contents
/////////////////////////////////////////////////////////...
*set /a リーディングゼロの対処 [#d522de6d]
set /a の算術式の中で、0010 のようにゼロで始まる値は8進数...
-リーディングゼロがある場合
set A=0028
set /a B=%A%+1 → 無効な数字。というエラーになる
set /a C=A+1 → 8が非数字、Aは002という値と見な...
3行目のようにエラーにならないで意図しない結果となるケース...
**対処方法 [#wa794801]
-桁数固定の場合
set A=08
set B=0010
set /a A=1%A%-100
set /a B=1%B%-10000
set M=「2桁の数字」
if 1%M% gtr 112 (Mが12を超える場合の処理)
-リーディングゼロの有無が不明の場合(キーインデータなど)
set A=「10000未満の数字でリーディングゼロの有無は不明」
set /a A=1000%A% %% 10000
/////////////////////////////////////////////////////////...
*set /a の単項演算子 [#wf15332e]
WinXPでは、set /? で単項演算子 ! ~ - の説明があるが、Win2...
説明が無い。しかし、実際にはWin2000でもこれらは使える。
意味については説明が無いが、C と同じく、論理NOT、ビットNO...
/////////////////////////////////////////////////////////...
*set /a 特殊記号の演算子 [#a9da562b]
set /a 文で使える演算子のうち、<< >> & | ^ は、特殊文字な...
クォートするか、" " で囲む必要がある。あるいは、
set /a N="1 << 2"
set /a "N=1 << 2"
のように式全体を " " で囲んでも良い。
% はバッチスクリプト内では %% と書く。
! は遅延展開が無効な場合は特殊文字ではないのでそのままで...
有効な場合は特殊文字となるので ^^ でクォートする必要があ...
遅延展開が無効な場合は ^! となるのでエラーとなる。~
また、^ は遅延展開が無効な場合でも有効な場合でも ^^ でよ...
遅延展開が有効で ^ と ! が同じ行にあるときは ^ は ^^ でな...
! があるときは遅延展開が有効か無効かによって書き方を変え...
set /a N=!X → OK ( not X )
set /a N=^^!X → エラー
set /a N=X^^!Y → OK ( X xor not Y )
setlocal enabledelayedexpansion
set /a N=!X → ! が空に置換されるので、N=X と...
set /a N=^^!X → OK ( not X )
set /a N=X^^!Y → X!Y となってエラー
set /a N=X^^^^!Y → X^Y となる。!は空に置換される
set /a N=X^^^^^^!Y → OK ( X xor not Y )
( ) = ~ + - * / は、特殊文字ではないのでそのままで良い。
ただし、) は、set /a 文が ( ) の中の場合は特殊文字となる...
^ か " " でクォートする必要がある。
set /a N=(1+2)*3 → OK
(set /a N=(1+2)*3) → エラー
(set /a N=(1+2^)*3) → OK
(set /a N="(1+2)*3") → OK
set /a N=(1+2^)*3 → OK
/////////////////////////////////////////////////////////...
*set /p 入力結果の確認 [#if59e8dd]
空入力の時、変数には空がセットされる(未定義になる)のでは...
set ANSWER=Y
set /p ANSWER=Enter(Y/N) [Y]?
のようにデフォルト値の設定を想定した機能であろう。空入力...
set ANSWER=
set /p ANSWER=Enter Name:
のようにあらかじめ未定義にしておく必要がある。
ERRORLEVELは、空入力の時に1になる。しかし、空以外の入力の...
従って、空入力の判断にERRORLEVELを使うためには、あらかじ...
set VAR=
cd . %ERRORLEVEL を 0 にセットする%
set /p VAR=Enter:
if ERRORLEVEL 1 echo 空入力だった
set VAR=
set /p VAR=Enter:
if not defined VAR echo 空入力だった
後者のほうがわかりやすい。~
変数をあらかじめ空にするのでなく何らかのデフォルト値を入...
デフォルト値のままである事を確認するのなら前者の方法を取...
/////////////////////////////////////////////////////////...
*set /p による改行なしの文字列表示 [#ccf34f3c]
set /p のプロンプト文字列表示機能を使って、echo と違って...
set /p DMY=abcdefg<NUL
set /p <NUL DMY=abcdefg
また、変数の値はどうせ使わないので変数名は省略してもかま...
set /p <NUL="abcdefg>"
/////////////////////////////////////////////////////////...
*文末の空白 [#faa0faa6]
set を & を使ってマルチステートメントで記述する際、
set A=abc & set B=def
のように & の前に空白を置くと、Aには abc ではなく、abc空...
これを避けるためには、
set A=abc& set B=def
のように & の前に空白を置いてはいけない。または、" " で囲...
set "A=abc" & set "B=def"
ならば空白は含まない文字列がセットされる。
& だけでなく、) や && 、|| の前も同じ。
/////////////////////////////////////////////////////////...
*変数名の空白 [#ye877c71]
環境変数名には先頭でなければ空白も使用可能である。
set VAR = 123
とすると、「V」「A」「R」「空白」が環境変数名となり、
%VAR % の値が 「 123」となる。~
このようにイコールの前後の空白も意味を持つので注意が必要。
/////////////////////////////////////////////////////////...
*set "VAR=%A%" [#d6827095]
環境変数Aの値に < > & | 等の特殊文字を含む場合は、
set VAR=%A%
では、値をセットできない。特殊文字を含んでいても " を含ん...
set "VAR=%A%"
と、全体を " " で囲むことで安全に値をセットできる。前項も...
/////////////////////////////////////////////////////////...
/////////////////////////////////////////////////////////...
#navi(コマンド別)
ページ名: