2009-02-11 3 views
5

Ich mag würde folgende Skript von Linux-Shell auf Windows XP übersetzenASSIGN Win XP Kommandozeile Ausgang variable

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

Die zweite Zeile übersetzt wurde Shell; das Problem ist, eine Variable mit der Definition, die Shell-Ausgabe in Windows :-(

+0

Bitte markieren Sie Ihre Anfragen korrekt – PierreBdR

+0

Sind Sie wirklich mit DOS (XP Shell) festgefahren? Es ist stark eingeschränkt im Vergleich zu einer Linux-Shell. Wenn möglich, würde ich sehr empfehlen, wenn möglich mit einer der in XP verfügbaren Skriptsprachen (VBScript oder JScript) zu gehen. Oder noch besser, wenn möglich, installieren Sie Powershell. Sie könnten auch Cygwin installieren. – EBGreen

Antwort

0

enthält Wie wäre es ...

für/f "tokens = *" %% a in ('echo Hallo Welt') richte var = %% eine

. HINWEIS: Verwendung% a statt %% ein, wenn sie versuchen halten auf der Kommandozeile anders als %% ein, wenn in einer Batch-Datei mit

Wo 'echo Hallo Welt' ist Der Befehl, dessen Ausgabe Sie erfassen möchten und "var" ist der Name der Variablen, in der die Ausgabe gespeichert wird.

+0

Das ist so nah wie möglich, aber das OP sollte sich bewusst sein, dass mehrzeilige Strings nicht in einem DOS var gespeichert werden können. – EBGreen

1

Wenn Sie die Ausgabe des Befehls rekursiv ausführen müssen, können Sie for /f verwenden. Etwas wie:

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

Sorry, ich bin nicht awk tüchtig, aber hoffentlich kommst du auf die Idee. –

4

ok Problem behoben basicly

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 

Dieser Code tut, was ich tun wollte.

Sie sind toll Vielen Dank !!!!!