Kann man Umleitungsbefehle in einer Variablen speichern? Etwas in diesen Zeilen:Umleitungsanweisungen in Variable verschieben?
set redirect=>> buildlog.txt 2>&1
nmake -f Makefile %redirect%
So funktioniert das nicht.
Kann man Umleitungsbefehle in einer Variablen speichern? Etwas in diesen Zeilen:Umleitungsanweisungen in Variable verschieben?
set redirect=>> buildlog.txt 2>&1
nmake -f Makefile %redirect%
So funktioniert das nicht.
Da >
Shell-Metazeichen sind, können Sie sie nicht direkt verwenden, um einer Variablen einen Text zuzuweisen. Sie werden von der Shell ausgeführt und ihr RESULT wird zugewiesen. So müssen Sie zitieren/entkommen ihnen:
set redirect=^>^>buildlog.txt 2^>^&1
^-^--etc... cmd uses^to escape.
die dann wie erwartet funktioniert:
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
Perfekt, danke! –
'set" redirect = >> buildlog.txt 2> & 1 "' (Zitat vermeidet Fluchtgefahr ...) – aschipfl
Alles, was Sie wirklich tun müssen, um den Einsatz verzögert Expansion.
@echo off
set "redirect=>> buildlog.txt 2>&1"
setlocal enabledelayedexpansion
nmake -f Makefile !redirect!
endlocal
Das ist eine andere Lösung, danke! –
Nein, das funktioniert nicht. Sobald Sie das '>' und '&' in der Variablen richtig gelesen haben, müssen Sie '% redirect%' verwenden, wenn die Umleitung funktionieren soll. – dbenham
würden Sie haben die var Zuordnung in Anführungszeichen gesetzt, weil sonst die Umleitung auf die 'Set' Befehl angewendet wird, isntead der Zeichen '2', '>', etc ... immer zugewiesen als Text zur Variable. –
@MarcB Können Sie ein funktionierendes Beispiel bereitstellen? Ich habe versucht, mit Anführungszeichen, aber es funktioniert auch nicht ... –
Ich verstehe nicht ganz, was Sie in Ihrer Buildlog.txt-Datei wollen. Möchten Sie, dass Buildlog.txt ** set redirect = ** enthält? – Squashman