コマンドで取得した値を変数に入れたとき、行末に半角スペースがありました。それを削除する方法をメモ。
変数の値の行末に2個の半角スペースが
コマンドでPCのベンダー名(製造者)を変数に入れ、IF文で判別して分岐処理するバッチファイル作ることがありました。そのとき、変数内の値の行末に半角スペースが入っていたので、それを消すためにやったことを例にメモしています。
PCのベンダー名(メーカー名)を取得してみる
例えば以下のコマンドでPCの製造メーカー(ベンダー名)を表示できます。
wmic csproduct get Vender
コマンド実行結果
PCが自作パソコンなので、「To Be Filled By O.E.M.」と表示されました。これが例えば富士通製のPCだと「FUJITSU」と表示されます。
結果を変数に入れて表示してみる
この値を変数に入れて表示するバッチファイルを実行してみます。
@echo off for /f "tokens=2 usebackq delims=^:" %%i in (`wmic csproduct get Vendor ^| findstr /n /r "." ^| findstr /r "^2:"`) DO @set Get_Vendor=%%i echo. echo ベンダー名は%Get_Vendor%です。 echo. pause
「To Be Filled By O.E.M.」後ろに2個の半角スペースがある
行末のスペースを削除する処理を加えたバッチファイル例
PHPとか他のスクリプト言語ならTRIMやREPLACEなど文字列の置換を行う関数があったりしますが、コマンドプロンプトにはありません。
どういう仕組みなのかわかりませんが、以下の2つを追記して行末のスペースを処理します。
call :Trim %Get_Vendor%
:Trim set Get_Vendor=%*
これで行末の半角スペースを消すことができます。
@echo off
for /f "tokens=2 usebackq delims=^:" %%i in (`wmic csproduct get Vendor ^| findstr /n /r "." ^| findstr /r "^2:"`) DO @set Get_Vendor=%%i
call :Trim %Get_Vendor%
echo. echo ベンダー名は%Get_Vendor%です。 echo.
pause
:Trim set Get_Vendor=%*
行末のスペースが消えました
無事、行末のスペースを削除することができました。
参考サイト
- http://fpcu.on.coocan.jp/dosvcmd/bbs/log/cat3/cat54/4-1557.html
- http://itdiary.info/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88/post-754/