Esiste qualcosa come Sostituzione comandi nell'interfaccia della riga di comando di Windows?


14

In Linux (Bash), c'è un modo per usare un comando come parametro per un altro comando, usando back-tick:

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

Questo stamperebbe:

===== L'ora corrente è: 12: 22: 34.68 =====

C'è un modo per farlo in cmd.exe su Windows?




Vedi anche questo post ( uso del comando doskey da cmd )
misterjaytee,

@misterjaytee: la sostituzione del comando e gli alias sono cose diverse.
user1686,

@grawity - Grazie per averlo sottolineato - Nota per sé: deve leggere correttamente la domanda prima di rispondere ...
misterjaytee,

Risposte:


9

Prova questo:

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

So che questo potrebbe non essere quello che vuoi, perché hai menzionato la sostituzione dei comandi ... Quindi potrebbe essere questo:

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

Per ulteriori suggerimenti sull'uso di usebackqprovare questo comando:

for /?

4
Sì, for /fè quello che stavo cercando. Grazie! Una nota a margine: è così clandestino e difficile da ricordare (rispetto al modo bash). Dovrei rinunciare alla "programmazione dei pipistrelli" e imparare qualcosa di più produttivo - PowerShell forse?
Cristi Diaconescu,

3

In Windows l'operatore '()' ha un comportamento simile alla sostituzione del comando Bash.

Questo script Linux:

my_linux_variable=$(ls)
my_alternate_linux_variable=`ls`

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

dà un risultato simile a Windows PowerShell:

$my_windowsPS_variable = (dir)

$my_windowsPS_variable

e come Windows CMD:

set my_windowsCMD_variable=(dir)
%my_windowsCMD_variable%

9
L'esempio di Windows CMD è errato. Le parentesi nella shell cmd eseguono semplicemente un comando in una subshell. Env var è impostato su "(dir)" ed è eseguito sulla seconda riga (quando env var è racchiuso da%) - non proprio la sostituzione desiderata.
davidbak,

1
questo non è corretto per il comportamento di Windows cmd.exe
JJS

Questa è la PowerShell, mentre la domanda riguarda cmd.exe
Raúl Salinas-Monteagudo,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.