[ホーム] - [バッチファイル サンプル一覧] - [バッチファイルのパラメータとしてイコールやセミコロンが使えない原因と対処]

バッチファイルのパラメータとしてイコールやセミコロンが使えない原因と対処 | Windows バッチファイル



パラメーターの悩み


Windows 10 のバッチ環境で =(イコール)や;(セミコロン)を引数として渡したい場合があります。しかしバッチファイルのパラメータとして =(イコール)や;(セミコロン)を使用した場合は正常にパラメータとして渡されません。
何故ならこれらはWindows コマンドプロンプト環境ではは区切り記号として理解されてしまいます。

簡単に言うと

コマンドのパラメータの区切り記号という解釈 >>> 引数

ということです。

サンプルで説明


例:以下のバッチファイルがあるとします。


@echo 一番目のパラメータ→%1
@echo 二番目のパラメータ→%2
@echo 三番目のパラメータ→%3



p1,p2,p3をパラメータとして与えた場合は、以下のとおり正常に出力されます。


C:\>paramtest.bat p1 p2 p3



一番目のパラメータ→p1
二番目のパラメータ→p2
三番目のパラメータ→p3


しかしパラメータに = が含まれる場合、空白と同様に区切りと理解され意図した結果となりません。


C:\>paramtest.bat p1=1 p2 p3



一番目のパラメータ→p1
二番目のパラメータ→1
三番目のパラメータ→p2


参考:
Semicolon, Equal Sign As Arguments in Batch File
http://support.microsoft.com/kb/71247/en-us

対策


Windows 10 環境でこれらを引数として渡すのは困難です。
=やセミコロンは他の文字列とし引数に渡し、バッチないでこれらに変換するのが一番簡単な解決策です。

あるいは Powershellを使うのもよいでしょう。








本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。)

[ホーム] - [バッチファイル サンプル一覧]