Чи є щось на зразок Command Substitution в Windows CLI?


14

В Linux (Bash) є спосіб використовувати команду як параметр для іншої команди, використовуючи back-ticks:

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

Це надрукує:

===== Поточний час: 12: 22: 34.68 =====

Чи є спосіб зробити це в cmd.exe на WIndows?




Також дивіться цей пост ( використання команди doskey від cmd )
misterjaytee

@misterjaytee: Заміна команд і псевдоніми - це різні речі.
користувач1686

@grawity - Дякую за вказівку на це - Примітка до себе: треба правильно прочитати питання, перш ніж відповісти ...
misterjaytee

Відповіді:


9

Спробуйте це:

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

Я знаю, що це може бути не те, що ви хочете, тому що ви згадали про заміну команд ... Тож це може бути все:

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

Для отримання додаткових підказок щодо використання usebackqспробуйте цю команду:

for /?

4
Так, for /fце те, що я шукав. Спасибі! Зі сторони: Це так химерно і важко запам’ятати (порівняно з баш-способом). Я повинен відмовитися від «програмування кажана» і навчитися чомусь більш продуктивного - можливо, PowerShell?
Крістіан Діаконеску

3

У Windows оператор '()' має аналогічну поведінку, як підміна команди Bash.

Цей сценарій Linux:

my_linux_variable=$(ls)
my_alternate_linux_variable=`ls`

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

дає аналогічний результат, як Windows PowerShell:

$my_windowsPS_variable = (dir)

$my_windowsPS_variable

і як Windows CMD:

set my_windowsCMD_variable=(dir)
%my_windowsCMD_variable%

9
Приклад CMD Windows невірний. Парени в оболонці cmd просто виконують команду в нижній частині. Для env var встановлено значення "(dir)", і воно виконується на другому рядку (коли env var оточений%) - насправді не потрібна заміна.
davidbak

1
це неправильно для Windows cmd.exe поведінки
JJS

Це повноваження, тоді як питання про cmd.exe
Рауль Салінас-Монтеагудо,

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.