Umleiten der Befehlszeilenausgabe von 7-Zip unter Windows beim Extrahieren einer .7z-Datei nach / dev / null

7611
Peter Mounce

Ich habe einen Befehl wie "C:\Program Files\7-zip\7z.exe" x foo.7z -yden, der (mit vollen Pfaden) in das aktuelle Verzeichnis extrahieren wird.

Was ich aber nicht will, ist, die einzelnen Pfade nach stdout auszuspulen. Dies sind Informationen, die ich nicht brauche.

Unter Windows führt die Umleitung zu NUL (das Äquivalent /dev/nullzu Linux) zu einer "C:\Program Files\7-zip\7z.exe" x foo.7z -y > NULDatei, die keine entpackten Dateien erzeugt, da 7-Zip anscheinend zu NUL entpackt wird, anstatt den Befehl text-output an NUL zu verschieben (was wir wollen) ).

Tatsächlich funktioniert dieser Befehl von einer Windows-Befehlsshell aus (d. H. Er entpackt die Dateien nach Belieben, ohne jedoch Text in der Konsole zu protokollieren), ir macht jedoch nicht die TeamCity- Agentenausführung in seinem Befehlszeilen-Build-Runner (d. H, wird in NUL entpackt).

Wie kann ich erreichen, dass in TeamCity (das als Dienst ausgeführt wird) dasselbe geschieht?

6

2 Antworten auf die Frage

7
Hello71

Versuchen Sie folgendes:

%COMSPEC% /c "%ProgramFiles%\7-Zip\7z.exe" ... 
Vielen Dank; das hat funktioniert (obwohl ich nicht wirklich weiß warum). Peter Mounce vor 13 Jahren 0
@Peter: TeamCity is likely actually executing it with the argv [... "-y", ">", "NUL"] or otherwise executing the file "C:\Program Files\7-Zip\7z.exe x foo.7z...". Hello71 vor 13 Jahren 0
Ah, yes; that would make sense. It has one textbox to take the exe, and one to take the arguments. Peter Mounce vor 13 Jahren 0
2
Yaegor

7z.exe x foo.7z -y> NUL Funktioniert in meinem Fall einwandfrei. Sind Sie sicher, dass das Verhalten nicht von etwas anderem verursacht wird, und Sie erhalten die Fehlermeldung wegen der Umleitung der Ausgabe nicht?

Sie können die Ausgabe auch in eine Datei anstelle von NUL umleiten und damit auch von der Ausgabe ausschließen.

It works fine for me from a console too; it doesn't work fine when it's the TeamCity build-agent (running as a service) that is executing the command headlessly. It's the TeamCity involvement that made this a stackoverflow.com question, which was why I asked there; unfortunately it got moved and I don't know how to appeal to a moderator. Peter Mounce vor 13 Jahren 1