Gibt es so etwas wie eine Befehlsersetzung in der Windows-CLI?


14

Unter Linux (Bash) gibt es eine Möglichkeit, einen Befehl mithilfe von Back-Ticks als Parameter für einen anderen Befehl zu verwenden:

> echo ===== `time` =====

Dies würde drucken:

===== Die aktuelle Zeit ist: 12: 22: 34.68 =====

Gibt es eine Möglichkeit, dies in cmd.exe unter Windows zu tun?




Siehe auch diesen Beitrag ( Verwendung des Befehls doskey von cmd )
misterjaytee

@misterjaytee: Befehlsersetzung und Aliase sind verschiedene Dinge.
user1686

@grawity - Vielen Dank für den Hinweis - Hinweis an mich selbst: muss die Frage richtig lesen, bevor Sie antworten ...
Misterjaytee

Antworten:


9

Versuche dies:

echo. ===== %time% =====

Ich weiß, dass dies möglicherweise nicht das ist, was Sie wollen, weil Sie die Befehlsersetzung erwähnt haben ... Also könnte es das sein:

for /f "usebackq tokens=*" %i in (`date/t&time/t`) do echo.  ===== %i =====

Weitere Hinweise zur Verwendung von usebackqtry finden Sie in diesem Befehl:

for /?

4
Ja, for /fdas habe ich gesucht. Vielen Dank! Nebenbei bemerkt: Es ist so klobig und schwer zu merken (im Vergleich zum Bash-Weg). Ich sollte die "Fledermausprogrammierung" aufgeben und etwas Produktiveres lernen - PowerShell vielleicht?
Cristian Diaconescu

3

In Windows hat der Operator '()' ein ähnliches Verhalten wie die Ersetzung des Bash-Befehls.

Dieses Linux-Skript:

my_linux_variable=$(ls)
my_alternate_linux_variable=`ls`

echo $my_linux_command=$(ls)
echo $my_alternate_linux_command=`ls`

gibt ein ähnliches Ergebnis wie Windows PowerShell:

$my_windowsPS_variable = (dir)

$my_windowsPS_variable

und als Windows CMD:

set my_windowsCMD_variable=(dir)
%my_windowsCMD_variable%

9
Windows CMD-Beispiel ist falsch. Parens in der cmd-Shell führen einfach einen Befehl in einer Subshell aus. Die env var wird auf "(dir)" gesetzt und in der zweiten Zeile ausgeführt (wenn die env var von% umgeben ist) - nicht wirklich die gewünschte Ersetzung.
Davidbak

1
Dies ist falsch für Windows cmd.exe Verhalten
JJS

Dies ist Powershell, während die Frage über cmd.exe
Raúl Salinas-Monteagudo

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.