2009-02-11 14 views
5

vorrei tradurre un seguente script dalla shell di Linux a Windows XP sborsareASSEGNA win XP uscita di comando alla variabile

GPSID=$(awk '/GPSID/ {print $3}' gora.RTK) 
awk -v variable=${GPSID} 'BEGIN {printf "Numer seryjny : " variable,$1}' >>out.txt 

La seconda linea è stato tradotto; il problema è con la definizione di una variabile che contiene l'uscita della shell di Windows :-(

+0

Si prega di contrassegnare correttamente le richieste – PierreBdR

+0

Sei davvero bloccato con DOS (shell XP)? È severamente limitato rispetto a una shell di Linux. Se possibile, ti consiglio vivamente di andare con uno dei linguaggi di script disponibili in XP (VBScript o jscript) se possibile. O ancora meglio ancora se possibile installare PowerShell. È anche possibile installare cygwin. – EBGreen

risposta

0

ne dite ...

per/F "tokens = *" %% a in ('echo Ciao Mondo') non impostare var = %% a

. NOTA: l'uso% di un posto di %% a quando si cerca sulla riga di comando altrimenti tenerlo come %% a se si utilizza in un file batch

Dove 'echo Ciao mondo' è il comando di cui si desidera acquisire l'output e "var" è il nome della variabile in cui verrà archiviato l'output.

+0

Questo è il più vicino possibile, ma l'OP deve tenere presente che le stringhe multilinea non possono essere archiviate in una variabile DOS. – EBGreen

1

Se è necessario recurse attraverso l'output del comando, è possibile utilizzare for /f. Qualcosa di simile:

for /f "usebackq" %%L in (`awk '/GPSID/ {print $3}' gora.RTK`) do (
    awk 'BEGIN {printf "Numer seryjny : " %%L,$1}' >> out.txt 
) 
+0

Scusa, non sono abile, ma spero che tu abbia l'idea. –

4

ok problema risolto

for /f "tokens=*" %%a in ('awk "/GPSID/ {print $3}" gora.RTK ') do set var=%%a 
awk "BEGIN {printf \"GPSID : \" }" >out.txt 
echo %var% >>out.txt 

Questo codice fa fondamentalmente quello che volevo fare.

Sei fantastico, grazie !!!!!