2012-08-13 7 views
7

Gibt es eine Windows-äquivalente Syntax, um einen Befehl innerhalb eines anderen Befehls in einer Bat-Skriptdatei auszuführen?Windows Bat-Alternative für Bash Inline-Befehl

In Linux können Sie einfach $(...) oder `` verwenden.

+0

Windows .bat-Dateien sind ein historischer Rückfall, warum installieren Sie stattdessen nicht Perl? – cdarke

+0

Batchdateien haben immer noch einen Platz - z. B. wenn Sie einen Teil eines Installationsskripts ausführen müssen. Sie können nicht davon ausgehen, dass Perl auf dem System des Benutzers installiert wird. –

Antwort

7

Ja, zumindest für einfache Dinge:

@setlocal enableextensions enabledelayedexpansion 
@echo off 
for /f %%w in ('echo xyzzy') do set var=%%w 
echo Output is %var% 
endlocal 

Die Ausgabe des Skripts ist:

Output is xyzzy 

mit dem xyzzy vom echo Befehl kommt.

Die Ausführung von for /? über ein Befehlsfenster sollte Ihnen eine umfassendere Liste von Optionen bieten.

+0

Ich denke, das wird von 'for-in' Konstrukt nicht intern von Windows-Kommandozeilen-Engine behandelt. In meinem Fall scheint es nicht zu funktionieren: http://stackoverflow.com/questions/11828801/imagmagick-how-to-add-a-gradient-splice-to-an-image-using-one-convert-command/11864792 # 11864792 – Mohsen

+0

@Moshen, 'für' ist der einzige Weg, wie ich denke, dass Sie das tun können. Selbst 'bash' führt den Code nicht mit' $() 'aus, sondern ersetzt einfach die Standardausgabe eines anderen Prozesses. Das ist nicht anders, als es in einer Umgebungsvariablen zu speichern und dann diese Variable zu verwenden, wie in meiner Antwort. – paxdiablo

+0

@Mohsen - FOR ist ein interner Befehl, also wird es definitiv von der Kommandozeilen-Engine gehandhabt. – dbenham