2012-01-19 13 views
96

In Unix, si possono mettere comandi multipli in una sola riga come questa:più comandi su una sola riga in un file batch di Windows

$ date ; ls -l ; date 

ho provato una cosa simile in Windows:

> echo %TIME% ; dir ; echo %TIME 

Ma ha stampato l'ora e non esegue il comando dir.

Come posso ottenere questo risultato?

+3

Eventuali duplicati di [? Come eseguire due comandi in una sola riga in Windows CMD] (http://stackoverflow.com/questions/ 8055371/how-to-run-two-commands-in-one-line-in-windows-cmd) – IvanRF

risposta

155

Uso:

echo %time% & dir & echo %time% 

Questo è, dalla memoria, equivalente al separatore virgola in bash e altre shell Unixy.

C'è anche && (o ||), che esegue solo il secondo comando se il primo è riuscito (o fallito), ma il singolo commerciale & è quello che stai cercando qui.


Questo probabilmente ti darà lo stesso tempo, tuttavia poiché le variabili di ambiente tendono a essere valutate in lettura anziché in esecuzione.

È possibile aggirare questo accendendo espansione ritardata:

pax> cmd /v:on /c "echo !time! & ping 127.0.0.1 >nul: & echo !time!" 
15:23:36.77 
15:23:39.85 

ciò che serve da linea di comando. Se stai facendo questo all'interno di uno script, si può semplicemente utilizzare setlocal:

@setlocal enableextensions enabledelayedexpansion 
@echo off 
echo !time! & ping 127.0.0.1 >nul: & echo !time! 
endlocal 
+0

Grazie per la risposta. Il problema è che funziona parzialmente. la prima e l'ultima volta% stampano la stessa ora anche quando il comando (in mezzo) impiega almeno 40 secondi per completarsi. (Eseguo il mio script invece del comando dir) – Raghuram

+1

Questo perché le variabili d'ambiente vengono valutate quando il comando è _read_ piuttosto che eseguito. Aggiornerò la risposta – paxdiablo

+0

Ancora il problema persiste. Lo script sta uscendo con il codice 1. Ma ancora il secondo eco stampa nello stesso tempo Vedi questo 12: 57: 56.93 Un thread è terminato mentre erano in esecuzione 3 thread. 12: 57: 56.93 – Raghuram

Problemi correlati