2009-02-11 8 views
5

je voudrais traduire un script suivant de shell linux Windows XP shellwin XP ASSIGN sortie de ligne de commande à la variable

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

La deuxième ligne a été traduit; le problème est de définir une variable qui contient la sortie shell dans les fenêtres :-(

+0

S'il vous plaît, étiqueter vos demandes correctement – PierreBdR

+0

Êtes-vous vraiment coincé avec DOS (XP Shell)? Il est sévèrement limité par rapport à un shell Linux. Si possible, je recommande vivement d'aller avec l'un des langages de script disponibles dans XP (VBScript ou jscript) si possible. Ou encore mieux encore, si possible installer PowerShell. Vous pouvez également installer cygwin. – EBGreen

Répondre

0

Que diriez-vous ...

pour/f « jetons = * » %% un dans (« echo Bonjour tout le monde ») ne définissez var = %% un

. REMARQUE: l'utilisation d'un% au lieu de %% un en essayant sur la ligne de commande reste le garder comme un %% en cas d'utilisation dans un fichier batch

Où « echo Bonjour tout le monde » est la commande dont vous voulez capturer la sortie et "var" est le nom de la variable où sera stockée la sortie

+0

C'est aussi proche que vous pourrez le faire, mais l'OP doit savoir que les chaînes multilignes ne peuvent pas être stockées dans une variable DOS. – EBGreen

1

Si vous avez besoin de parcourir la sortie de la commande, vous pouvez utiliser for /f. Quelque chose comme:

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

Désolé, je ne suis pas awk compétent, mais j'espère que vous avez l'idée. –

4

problème ok fixe

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 

Ce code fait basiquement ce que je voulais faire.

Vous êtes super Merci !!!!!

Questions connexes