Batch Aus einer cURL-Ausgabe bestimmte Werte suchen und verarbeiten

Agt.Romanoff

Lt. Junior Grade
Registriert
Aug. 2011
Beiträge
288
Hallo Liebe Community,

ich lasse mir von einer Internetseite über einen cURL-Befehl eine "Liste" in eine Textdatei schreiben. Das Liste habe ich in Anführungszeichen gesetzt, weil es als eine komplette Zeile raus kommt mit Kommatrennung und Anführungszeichen und sieht ungefähr so aus:
[{"name":"Programm1","version":"1.139.16","uuid":"123-123-4-767465-456456","lastImport":1655706508087,"lastImportFormat":"Word"},{"name":"Programm2","version":"1.124.58","uuid":"79854648-458488-78","lastImport":1655706487888,"lastImportFormat":"Excel"}]
Ich würde mir halt aus dieser Zeile bestimmte Werte raus ziehen um damit weiter zu arbeiten, aber komme hier nicht weiter. Ich habe es schon mit findstr und find und "delims=," versucht, aber wenn ich zum Beispiel nur nach "name":" suche, dann rechnet er ewig und wird nicht fertig.
Gibt es hier einen Batch-Befehl oder eine Funktion, welche man nutzen kann.
Im Idealfall soll das später in einer Liste als Datei raus kommen, welche dann ungefähr wir folgt aus sieht:
Programm11.139.16"uuid"Word
Programm21.124.58"uuid"Excel

Wenn sowas einfach oder schöner zu lösen geht in einer anderen Programmiersprache, dann sagt mir mal in was ihr sowas machen würdet.

Danke
MfG
Die glühende Kohle
 
Hallo Glühkohle,

das ist ein json-string, den Du mit vielen Programmiersprachen verarbeiten kannst. Da hast Du beinahe schon beliebig viele Möglichkeiten.
 
Ich würde es in Python schreiben und auch die Anfrage selbst mit requests implementieren. Danach filtern und z.B per csv raus schreiben. Sind ein paar wenige Zeilen Code.
 
PowerShell:
$valstring = '[{"name":"Programm1","version":"1.139.16","uuid":"123-123-4-767465-456456","lastImport":1655706508087,"lastImportFormat":"Word"},{"name":"Programm2","version":"1.124.58","uuid":"79854648-458488-78","lastImport":1655706487888,"lastImportFormat":"Excel"}]'

$json = $valstring | ConvertFrom-Json
damit hast du die Werte in einem Array und kannst sie beliebig exportieren
 
  • Gefällt mir
Reaktionen: ksk23 und kartoffelpü
Glühkohle schrieb:
Lässt sich denn der String überhaupt sinnvoll in einer Batch-Datei verarbeiten?

Dein Json String?

Hast du den die Beispiele mal probiert?
bei meinem kannst du dann z.b.
PowerShell:
$valstring = '[{"name":"Programm1","version":"1.139.16","uuid":"123-123-4-767465-456456","lastImport":1655706508087,"lastImportFormat":"Word"},{"name":"Programm2","version":"1.124.58","uuid":"79854648-458488-78","lastImport":1655706487888,"lastImportFormat":"Excel"}]'

$json = $valstring | ConvertFrom-Json

foreach ($val in $json){
    $val | Export-Csv -Encoding utf8 -Delimiter ';' "c:\Temp\json2csvexport.csv" -NoClobber -Append
}
Damit wird er in eine CSV exportiert
 
Das habe ich leider noch nicht probiert.
Hintergrund ist die Umwandlung von cURL durch die Nutzung von PowerShell in Invoke-WebRequest. Ich bin froh das ich den Batchbefehl hinbekommen habe mit Proxy und ohne Authentification.
Der cURL sieht wie folgt aus:
Code:
curl -x http://meinProxy --proxy-negotiate -U: -k -X GET "https://meine URL" -H  "accept: application/json" -H  "X-Api-Key: mein Api-Key"
 
Ich hatte mich auf der Seite und auf Stack-Overflow schon versucht einzulesen.
Aktuell habe ich folgendes:
Code:
Invoke-WebRequest -Proxy http://mein-proxy -ContentTyp application/json -Method GET -Uri https://meine-url -Headers @{"X-Api-Key" = "mein-Api-Key"}
Ich bin aktuell noch mit der Syntax etwas unsicher. Des weiteren weiß ich nicht wie ich das mit "--proxy-negotiate -U: -k" in PS übersetzte.

Vielleicht kann mir jemand sagen was da die richtige "Übersetzung" in PS wäre.
Danke
 
Zuletzt bearbeitet:
Deine Seite und eine andere hat mir jetzt alles gegeben was ich brauche:
Code:
iwr -Proxy http://mein-Proxy -ProxyUseDefaultCredentials -Method GET -Uri https://mein-URL -Headers @{'ContentTyp' = 'application/json';"X-Api-Key" = "mein-API-KEy"} -UseBasicParsing
Jetzt konnte ich noch über Select-Object den entsprechenden Teil raus ziehen, den ich brauche und mit deinem angegeben Codeteil weiter arbeiten.

Danke dir oder euch.
Falls ich wieder an einer kleinen Stelle hänge, dann mache ich einen neuen Thread im Powershell-Bereich
 
Zurück
Oben