2016-09-23 8 views
0

リダイレクト命令を変数に格納することはできますか?これらの行に沿ったもの:リダイレクト命令を変数に移動しますか?

set redirect=>> buildlog.txt 2>&1 

nmake -f Makefile %redirect% 

これは機能しません。

+0

あなたがそうでなければ、リダイレクトは 'set'コマンドに適用されますので、引用符でVARの割り当てを囲む必要があるだろう、文字 '2'、のisnteadは'> '、等...として割り当て取得しますテキストを変数に追加します。 –

+0

@MarcB実例を提供できますか?私は引用符で試してみましたが、どちらもうまくいきません... –

+0

あなたのbuildlog.txtファイルで何をしたいのかよく分かりません。 buildlog.txtに** set redirect = **を含めますか? – Squashman

答えて

2

>はシェルメタキャラクタなので、変数をテキストに直接割り当てることはできません。彼らはシェルによって実行され、RESULTが割り当てられます。だから、あなたが引用しなければならない/それらをエスケープ:あなたが期待するように動作

set redirect=^>^>buildlog.txt 2^>^&1 
      ^-^--etc... cmd uses^to escape. 

を:あなたが本当にする必要があるすべては、拡張遅れる使用が

C:\temp\z>set foo=^>^>log.txt 
C:\temp\z>dir %foo% 
C:\temp\z>dir 
Volume in drive C is Windows7_OS 
Volume Serial Number is 0E31-0E35 

Directory of C:\temp\z 

09/23/2016 10:32 AM <DIR>   . 
09/23/2016 10:32 AM <DIR>   .. 
09/23/2016 10:32 AM    333 log.txt 
       1 File(s)   333 bytes 
       2 Dir(s) 274,917,388,288 bytes free 

C:\temp\z>type log.txt 
Volume in drive C is Windows7_OS 
Volume Serial Number is 0E31-0E35 

Directory of C:\temp\z 

09/23/2016 10:32 AM <DIR>   . 
09/23/2016 10:32 AM <DIR>   .. 
09/23/2016 10:32 AM     0 log.txt 
       1 File(s)    0 bytes 
       2 Dir(s) 274,917,388,288 bytes free 
+0

パーフェクト、ありがとう! –

+1

'set" redirect = >> buildlog.txt 2>&1 "'(エスケープする必要のない引用...) – aschipfl

0

です。

@echo off 
set "redirect=>> buildlog.txt 2>&1" 

setlocal enabledelayedexpansion 
nmake -f Makefile !redirect! 
endlocal 
+0

これは別の解決策です。 –

+0

いいえ、これは動作しません。変数で '>'と '&'を正しく取得したら、リダイレクトを機能させるには '%redirect%'を使う必要があります。 – dbenham

関連する問題