2016-02-23 7 views
5

>|>>|<|<<演算子を使用してWindowsシェルコマンドをリダイレクトする方法は知っていますが、FORコマンドで使用するコマンドではこれを実行できません。例えばWindowsバッチでFORコマンドをリダイレクトする方法

あなたが見
for /f "usebackq tokens=*" %%I in (`__COMMAND__ 2>nul`) do (
    set MYVAR=%%I 
) 

、ここで私は静かにこの__COMMAND__の標準エラー出力をしたいと思います。 シェルは、その場所に2がないと苦情を言います(他のリダイレクトの場合と同じ動作)。

誰でもお手伝いできますか?

答えて

5
for /f "usebackq tokens=*" %%I in (`__COMMAND__ 2^>nul`) do (
    set MYVAR=%%I 
) 

in this caseリダイレクトと条件付き実行演算子は、キャレットでエスケープする必要があります。

または二重引用符ですべてを置く:

for /f "usebackq tokens=*" %%I in (`"__COMMAND__ 2>nul"`) do (
    set MYVAR=%%I 
) 

delayed expansionを使用することも可能である:

@echo off 

setlocal enableDelayedExpansion 

set "command=__COMMAND__ 2>nul" 

for /f "usebackq tokens=*" %%I in (`!command!`) do (
    set MYVAR=%%I 
) 
+0

それは働きます!これはおそらくこの愚かな質問のために可能な最も徹底的な答えだろう。だから私は今それを受け入れるだろう。ありがとう@npocmaka! – Campa

関連する問題