Czy w interfejsie Windows CLI jest coś takiego jak Zastępowanie poleceń?

14

W Linuksie (Bash) istnieje sposób na użycie polecenia jako parametru dla innego polecenia, przy użyciu tyknięć:

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

Spowoduje to wydrukowanie:

===== Aktualny czas to: 12: 22: 34.68 =====

Czy można to zrobić w programie cmd.exe w systemie Windows?

Cristian Diaconescu
źródło
1
zobacz ten post
Książę John Wesley
Zobacz także ten post ( użycie polecenia
doskey
@misterjaytee: Podstawianie poleceń i aliasy to różne rzeczy.
user1686
@grawity - Dziękujemy za zwrócenie na to uwagi - Uwaga dla siebie: należy poprawnie przeczytać pytanie, zanim
odpowiesz

Odpowiedzi:

9

Spróbuj tego:

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

Wiem, że może nie być to, czego chcesz, ponieważ wspomniałeś o zastępowaniu poleceń ... Więc może to być to:

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

Aby uzyskać więcej wskazówek na temat korzystania z usebackqtego polecenia, spróbuj:

for /?
Kurt Pfeifle
źródło
4
Tak, for /ftego szukałem. Dzięki! Na marginesie: Jest taki niezgrabny i trudny do zapamiętania (w porównaniu do bashu). Powinienem porzucić „programowanie nietoperzy” i nauczyć się czegoś bardziej produktywnego - może PowerShell?
Cristian Diaconescu
3

W systemie Windows operator „()” działa podobnie jak substytucja polecenia Bash.

Ten skrypt dla systemu Linux:

my_linux_variable=$(ls)
my_alternate_linux_variable=`ls`

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

daje podobny wynik jak Windows PowerShell:

$my_windowsPS_variable = (dir)

$my_windowsPS_variable

i jako Windows CMD:

set my_windowsCMD_variable=(dir)
%my_windowsCMD_variable%
DDS
źródło
9
Przykład CMD systemu Windows jest nieprawidłowy. Parens w powłoce cmd po prostu wykonują polecenie w podpowłoce. Env var jest ustawiony na „(reż)” i jest wykonywany w drugim wierszu (gdy env var jest otoczony przez%) - tak naprawdę nie jest to pożądane podstawienie.
davidbak,
1
jest to niepoprawne dla zachowania systemu Windows cmd.exe
JJS
To jest PowerShell, podczas gdy pytanie dotyczy cmd.exe
Raúl Salinas-Monteagudo,