Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Variable mit awk befüllen

Mitglied: Blacksaber

Blacksaber (Level 1) - Jetzt verbinden

13.11.2008, aktualisiert 14.11.2008, 7196 Aufrufe, 12 Kommentare

AWK und Unix-Tools auf Windows-Konsole

Hallo zusammen,
ich hoffe das mir hier einer helfen kann.

Ich habe folgende Anweisung:
01.
 cat download.xml | sed s/_/./g | grep "Releaseversion" | awk -v FS="Releaseversion: " "{print $2}" | awk -v FS="\"" "{print $1}"
Diese liefert mir einen Wert der so aussieht:
01.
3.3.12
Ich versuche jetzt schon seit Stunden dieses Ergebnis in eine Variable umzuleiten und es gelingt mir einfach nicht.
Ich brauche diesen String in der Variable AVX_VER die ich auch im Vorfeld mittels
01.
 set AVX_VER=text
angelegt habe.

Diese Variable benötige ich um bei einem weiteren Programmaufruf die Versionsnummer mit zu übergeben.
Das alles soll in einem BATCH-File ablaufen und eben mit der Windows-Konsole funktionieren da wir hier nur mit Windows-Clients (XP) arbeiten.

Vielen Dank schon mal auch wenn hier für ein Windows-Problem die Unixer belästigen muß...

gruß
Klaus
Mitglied: Biber
13.11.2008 um 14:47 Uhr
Moin Klaus,

wenn ich Dich richtig verstanden habe, ist das erste kryptische Geraffel ("cat download...") eine Winows-Batch-Zeile, die als Output den String "3.3.1.2." auf den Bildschirm zaubert?

Wenn ja, da würde folgende batchzeile diese Ausgabe in eine Variable trümmern:
01.
::.... irgendein.cmd 
02.
.... 
03.
FOR /F %%i in ('cat download ......bla...') do set "AVX_VER=%%i" 
04.
::test 
05.
echo Variablenwert AVX_VER: [%AVX_VER%]
Mit nur einem %-zeichen vor der laufvariablen (%i statt %%i) kannst Du es auch am CMD-Prompt testen.

Grüße
Biber
Bitte warten ..
Mitglied: Blacksaber
13.11.2008 um 15:19 Uhr
Danke für den Hint, aber leider tut er es nicht...

Das mit der ersten Zeile hast du richtig verstanden. Ich suche in einer Datei eine Zeile und diese bearbeite ich dann um z.B. auf das Ergebnis 3.3.12 zu kommen.

Mittlerweile habe ich versucht das ganze aufzudröseln. Deshalb sieht der Aufruf jetzt etwas anders aus. Das Ergebnis ist aber immer noch das gleiche.

Ich habe jetzt deinen Code mal mitverarbeitet:
01.
 FOR /F %%i in ('cat version.txt | awk -v FS="Releaseversion: " "{print $2}" | awk -v FS="\"" "{print $1}"') do set "AVX_VER=%%i"
ich bekomme dann allerdings die Meldung:
01.
 "%%i" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Vielleicht hilft es wenn ich mal die komplette .bat hier poste:
01.
 :: Setzen der Variablen und Initialbefüllung 
02.
 set AVX_VER=3.5.x 
03.
 
04.
 :: Versionsnummer in Datei schreiben 
05.
 cat "%USERPROFILE%\lokale Einstellungen\Audiworkbench\Testumgebung\configuration\download.xml" | sed s/_/./g | grep "Releaseversion" > version.txt 
06.
 
07.
 :: Version aus Datei auslesen 
08.
 cat version.txt | awk -v FS="Releaseversion: " "{print $2}" | awk -v FS="\"" "{print $1}" 
09.
 
10.
 ::Starten der Applikation (hier wird AVX_VER benötigt) 
11.
 ::EOF
Bitte warten ..
Mitglied: paulepank
13.11.2008 um 15:45 Uhr
Hallo Klaus.

"%%i" ist syntaktisch an dieser Stelle nicht verarbeitbar.

kommt daher, daß Sonderzeichen mit ^ maskiert werden müssen.
Das Pipezeichen | ist so eins, also ^| schreiben.

Vielleicht hilft es wenn ich mal die komplette .bat hier poste:

die download.xml wäre vielleicht effektiver. Du hast mit Sicherheit einige Pipe zuviel

und schön die Code-Formatierung benutzen.

Edit: oder 'n Link, wo man sich die xml runterladen kann.

cu paulepank
Bitte warten ..
Mitglied: Blacksaber
13.11.2008 um 17:16 Uhr
Hallo paulepank,

der String der aus der download.xml extrahiert wird lautet:
01.
 <downloadfiles workbenchVersion="3.3.12 Releaseversion: 3.3.12" buildID="2008-10-10" update="enabled">
Die Anweisung extrahiert sauber die Versionnummer die ich brauche. Hat aber natürlich keinen Anspruch perfekt zu sein. Für mich ist es einfach wichtig das ich auf einer CMD den Wert 3.3.12 in einer Variablen habe, damit ich anschließend diese im Applikationsstart nutzen kann.

Dein Tipp mit ^ hat leider auch nicht geklappt. Bekomme die gleiche Fehlermeldung wie bei Biber auch. Ich werde das allerdings jetzt auch nochmal auf einer anderen Maschine verfizieren. Ich werde hier berichten.

Danke schon mal. Weitere Tipps sind natürlich gerne willkommen.

Gruß
Klaus
Bitte warten ..
Mitglied: paulepank
13.11.2008 um 18:22 Uhr
Naja, nachdem wir Testdaten haben

1. das > am Zeilenende stört --> Workaround mit sed s/^>//g
2. FS="\"" funktioniert in der CMD so auch nicht.

Das wäre noch eine Pipe mehr. Das ist doch ein Gewurschtel.
Da du ja mit sed zunächst noch ein _ ersetzt, trägt dein "String" auch nichts
zur Lösung bei.
Also sende einen Link zum xml-File oder wenn nicht zu groß hier veröffentlichen.
Alles andere ist Flickschusterei.

cu paulepank
Bitte warten ..
Mitglied: Biber
13.11.2008 um 18:29 Uhr
..oder Du lässt Deinen funktionierenden Batch so wie er ist und rufst ihn so auf:

[CMD-Prompt]
For %i in ('D:\einPfad\Dein.bat') do set "AXV_VER=%i"
Batch:
For %%i in ('D:\einPfad\Dein.bat') do set "AXV_VER=%%i"

Grüße
Biber
Bitte warten ..
Mitglied: paulepank
13.11.2008 um 19:47 Uhr
...oder so:

für den Datensatz
01.
<downloadfiles workbenchVersion="3.3.12 Releaseversion: 3.3.12" buildID="2008-10-10" update="enabled">
diesen Code
01.
:: Version aus Datei auslesen 
02.
for /f "tokens=4" %%i in ('cat version.txt^|sed s/[\^"\^>\^<]//g')  do set AXV_VER=%%i
Was für ein Gemähre

cu paulepank
Bitte warten ..
Mitglied: Blacksaber
14.11.2008 um 09:50 Uhr
Zuerst mal vielen Dank für die Tipps.
Bin noch nicht zum testen gekommen, werde ich aber jetzt dann gleich nachholen.

In der .xml steht nicht sehr viel mehr drin. Die Zeile ist die 2 Zeile im File und wird komplett ausgelesen.

01.
<?xml version="1.0" encoding="ASCII"?> 
02.
<downloadfiles workbenchVersion="3_3_12 Releaseversion: 3_3_12" buildID="2008-10-10" update="enabled"> 
03.
	 
04.
	<!-- Bei einem Update muessen die folgenden Parameter geaendert werden --> 
05.
	<!-- - Dateiname, damit eine Aenderung erkannt wird --> 
06.
	<!-- - id wird aufsteigend nummeriert, bei neuen dateien --> 
07.
	<!-- - installDir (muss ein anderes Verzeichnis vergeben werden, wegen Filelock!!!) -->
Mehr kann und darf ich hier nicht veröffentlichen. Es folgen noch etwa 30 Zeilen die mit meinem Problem aber nichts zu tun haben.
Was ich mit meinem SED mache, ist daß ich die Unterstriche aus der Versionsnummer in Punkte umwandle.


Anmerkung:
Jetzt hab ich auch endlich die Formatierung für "code" gefunden. Werde den Rest noch nacheditieren.
Bitte warten ..
Mitglied: Blacksaber
14.11.2008 um 10:55 Uhr
Es ist zum Verzweifeln.

Es klappt immer noch nicht.

01.
M:\Daten\testen>echo %AVX_VER% 
02.
leer 
03.
 
04.
M:\Daten\testen>For %i in ('M:\Daten\meine.bat') do set "AXV_VER=%i" 
05.
 
06.
M:\Daten\testen>set "AXV_VER='M:\Daten\testen\meine.bat'" 
07.
 
08.
M:\Daten\testen>echo %AVX_VER% 
09.
leer
Das ist aus meiner Konsole kopiert.

Oder ich bekomme bei folgendem Aufruf:

01.
M:\Daten\testen>for /f "tokens=4" %%i in ('cat version.txt^|sed s/[\^"\^>\^<]//g')  do set AXV_VER=%%i 
02.
"%%i" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Ebenfalls aus der Konsole kopiert.

Also ich bin jetzt mit meinem Latein komplett am Ende.
Hat vielleicht irgendjemand noch eine Idee wie ich aus dem .xml den Wert den ich benötige in eine Variable bekomme?
Ich bin für alles offen. Es muß nur von jedem Rechner ohne vorher was zu installieren laufen.

Vielen Dank...

ein niedergeschlagener Klaus
Bitte warten ..
Mitglied: Biber
14.11.2008 um 11:36 Uhr
Sorry, Klaus/Blacksaber,

ist mein Fehler,

Ersetze: For %i in ('M:\Daten\meine.bat') do set "AXV_VER=%i"
Durch For /F %i in ('M:\Daten\meine.bat') do set "AXV_VER=%i" :

Ein wegen der unnötigen Verzögerung auch ganz niedergeschlagener
Biber

P.S. BTW - Du setzt bzw. fragst ab zwei unterschiedliche Variablen AVX_VER und AXV_VER....
Bitte warten ..
Mitglied: paulepank
14.11.2008 um 12:12 Uhr
Hallo,

"%%i" ist syntaktisch an dieser Stelle nicht verarbeitbar.

der Code war für die Batch gedacht.
%i am Prompt
%%i in der Batch

Das sollte aber klar sein !

cu paulepank
Bitte warten ..
Mitglied: Blacksaber
14.11.2008 um 13:09 Uhr
Juhu!!!!

Vielen, vielen Dank.
Ich habe wieder einiges gelernt und dank euch bin ich doch noch zum Erfolg gekommen.

@Biber
Danke für deine Hilfe und so ein Fehler kann passieren. Bin sehr froh das ihr mir überhaupt geholfen habt.
Danke für den Hinweis mit der Variablen. Da hat sich ein Buchstabendreher eingeschlichen. Wäre mir nicht mehr aufgefallen...

@paulepank
Das mit den %% war mir nicht klar. Ich kannte diese Geschichte noch gar nicht. Aber danke für den Hinweis, wieder was gelernt.
Auch dir vielen Dank für die Hilfe.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

In Batchdatei Variablen befüllen - mit Werten aus einer TXT-Datei

gelöst Frage von donnyS73lbBatch & Shell6 Kommentare

Hallo zusammen, ich möchte fragen, ob es - wie bspw. bei VBScript - auch mit einer Batchdatei möglich ist, ...

Batch & Shell

Linux Erklärbär zu awk gesucht

gelöst Frage von lexa-lexaBatch & Shell5 Kommentare

Hi, warum funktioniert folgendes *nicht*: FS="/backups"; SIZE=$(df -P So (ohne $FS) gehts jedoch: SIZE=$(df -P Ich will das in ...

Visual Studio

Array mit Excel-Range befüllen

gelöst Frage von MarcoBornVisual Studio4 Kommentare

Hallo Forum, ich möchte gern ein Array mit einer Spalte aus Excel befüllen. Das Ganze soll jedoch nicht Zeile ...

Microsoft Office

Excel: Matirx mit Formel automatisch befüllen

gelöst Frage von simsMicrosoft Office5 Kommentare

Hallo Leute! Ich sollte eine Matrix befüllen wo ich händisch ewig brauchen würde - daher meine Frage! ;-) Ich ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 13 StundenWindows 103 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 16 StundenAdministrator.de Feedback11 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 1 TagGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Windows Netzwerk
Backup über WAN
Frage von petereWindows Netzwerk11 Kommentare

Hallo, ich muss aus einem entfernten WAN (synchrone 1Gbit) Daten sichern. Dabei handelt es sich sowohl um wenige große ...