2017-08-11 4 views
1

これは私がやっていることの全範囲ではありません。私は蒸留した... 私はここには説明していない、私はちょうどそれを見ていない小さなと愚かなものがあると確信しています。それは、forループで失敗し、ループ構文ミスのバッチ/ cmd

netsh wlan show profile name="SomeWifi" 

はまだありません:

は、誰かが、私は成功し、次のnetshのコマンドを実行することができる理由を教えていただけますか?代わりに、プロファイル情報の

for /F "tokens=1,2 delims=:" %a in ('netsh wlan show profile name="SomeWifi"') do echo %a 

、ループのためには、このエラーメッセージを出してくれる:システムにそのような無線インタフェースはありません

を。

私は何が欠けていますか? (ユーザのように)カッコでコンテキストが変更されていますか?文字のエスケープの問題はありますか?

+1

'='区切り文字として扱われ、廃棄されたを使用することができ、問題

を生成します。それをエスケープ 'name^=" SomeWifi "' –

+0

それです!驚くばかり。これを回答として投稿し、私はそれを受け入れます。 – BuvinJ

答えて

4

for /fコマンドで直接使用すると、エスケープする必要がある文字がいくつかあります(接頭辞として^を使用)。それらの

一部はパーサーに特別な意味を持つことがは明らかにがscapingが必要だと思われるのが普通&|です。別の問題のある文字は、forコマンドのin句の閉じ括弧と見ることができる閉じ括弧())です。

ただし、一部の文字(例:,;)は区切り文字として認識されて削除されるため、エスケープする必要があります。あなたのケースでは=は、あなたが

for /F "tokens=1,2 delims=:" %a in ('netsh wlan show profile name^="SomeWifi"') do echo %a