codeless
Goto Top

Batch für alle Inhalte extrahieren zwischen Anführungszeichen aus einer Textdatei

Hallo,
möchte Inhalte zwischen Anführungszeichen aus einer Textdatei in eine andere Textdatei extrahieren. Komme leider nicht weiter.

Habe damit versucht:
for /f "usebackq tokens=1,2,* delims=" " " " %%s in ("N:\English\website.txt") do >>"N:\deutsch\website.txt" echo %%s%%u

Mein Ziel ist es die Inhalte zu extrahieren > In deutsch übersetzen und danach an der selben Stelle zwischen Anführungszeichen wieder einsetzen.

Brauche dafür zwei Batches.


Die Textdatei sieht so aus:

'player_play' => "Play",
'player_pause' => "Pause",
'player_prev' => "Previous",
'player_next' => "Next",
'player_mute' => "Mute",
'player_unmute' => "Unmute",
'player_settings' => "Settings",
'player_fullscreen' => "Enable full screen mode",
'player_efullscreen' => "Disable full screen mode",
'player_speed' => "Speed",
'player_normal' => "Normal",
'player_quality' => "Quality",
'player_pip' => "PiP mode",

Content-Key: 593322

Url: https://administrator.de/contentid/593322

Ausgedruckt am: 19.03.2024 um 09:03 Uhr

Mitglied: 145033
Lösung 145033 04.08.2020 aktualisiert um 12:36:44 Uhr
Goto Top
möchte Inhalte zwischen Anführungszeichen aus einer Textdatei in eine andere Textdatei extrahieren
Vor
@echo off
>"N:\deutsch\website.txt" (for /f usebackq^ tokens^=1^,3^ delims^=^"^' %%a in ("N:\English\website.txt") do echo.%%a;%%b)  
und
zurück
@echo off
>"N:\whatever.txt" (for /f "usebackq tokens=1,2 delims=;" %%a in ("N:\deutsch\website.txt") do echo '%%a' =^> "%%b",)  
Mitglied: codeless
codeless 04.08.2020 aktualisiert um 13:06:25 Uhr
Goto Top
geht nicht. Meldung:
"%%a" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
Mitglied: 145033
145033 04.08.2020 aktualisiert um 12:39:41 Uhr
Goto Top
Das ist alles für Batch-Files gedacht nicht fürs Ausprobieren auf der Konsole, für die Konsole müssen es einfach Prozentzeichen sein ... Funktioniert hier im Test einwandfrei!
Mitglied: codeless
codeless 04.08.2020 aktualisiert um 13:23:17 Uhr
Goto Top
Danke hat erstmal funktioniert. Brauche aber nur die rechts stehende Inhalte:
"Play",
"Pause",
"Previous",
"Next",
etc.

Bekomme das aber jetzt so:
player_play;Play
player_pause;Pause
player_prev;Previous
player_next;Next
player_mute;Mute

Die Apostroph Inhalte sollten unberührt bleiben.
Mitglied: 145033
145033 04.08.2020 aktualisiert um 13:33:39 Uhr
Goto Top
Zitat von @codeless:

Danke hat erstmal funktioniert. Brauche aber nur die rechts stehehne Inhalte:
"Play",
"Pause",
"Previous",
"Next",
etc.

Bekomme das aber jetzt jetzt so:
player_play;Play
player_pause;Pause
player_prev;Previous
player_next;Next
player_mute;Mute

Die Apostroph Inhalte sollten unberührt bleiben.
Die Ausgabe hatte ich so gestaltet, dass du es damit auch hinterher mit dem zweiten Teil von oben wieder zurückschreiben kannst und du eine Zuordnung hast face-wink.
Kannst du aber beliebig anpassen, einfach hinten das
...............do echo.%%a;%%b)
ändern in
...............do echo.%%b)
Dann bekommst du nur die Daten innerhalb der letzten Anführungszeichen
Die führenden Punkte natürlich nicht reinschreiben, versteht sich von selbst, hätte man eigentlich mit etwas Hirn einschalten auch selbst anpassen können ...
Mitglied: codeless
codeless 04.08.2020 um 13:44:14 Uhr
Goto Top
Danke nochmal habe nachher auch so gemacht.
Mitglied: codeless
codeless 06.08.2020 um 14:53:20 Uhr
Goto Top
Bekomme die Ubersetzten Inhalte nicht mehr auf die Richtige Position. Bei dem 2 Script bekomme ich mit dem Code nicht angepasst.

Abspielen
Pause
Weiter
Zurück
Etc
Mitglied: 145033
145033 06.08.2020 aktualisiert um 15:52:20 Uhr
Goto Top
Zitat von @codeless:

Bekomme die Ubersetzten Inhalte nicht mehr auf die Richtige Position. Bei dem 2 Script bekomme ich mit dem Code nicht angepasst.

Abspielen
Pause
Weiter
Zurück
Etc
Weil du dafür die Version mit
............ do echo.%%a;%%b)
nutzen musst face-smile

Bitte vorher einmal durchlesen und erst dann schreiben...
https://www.tutorialspoint.com/batch_script/index.htm

I'm out.
Mitglied: codeless
codeless 06.08.2020 um 15:59:52 Uhr
Goto Top
Das ist mir klar das ich dafür die Version nutzen soll. Aber ich muss das ja so hinbekommen wegen der Übersetzung. Ist es überhaupt möglich?

Versuche das eventuell mit Powergrep.

Danke trotzdem.
Mitglied: 145033
145033 06.08.2020 aktualisiert um 16:27:09 Uhr
Goto Top
Zitat von @codeless:

Das ist mir klar das ich dafür die Version nutzen soll. Aber ich muss das ja so hinbekommen wegen der Übersetzung. Ist es überhaupt möglich?
Geht doch face-smile.

Kannst auch die Powershell nehmen, hier als Beispiel die Übersetzungen in einer Hashtable im Skript (kann man natürlich auch aus einer Datei importieren ...)
$file = 'D:\daten.txt'  
$text = gc $file -raw

$translation = @{
    'player_pause' = 'Pause'  
    'player_play' = 'Abspielen'  
    'player_prev' = 'Letzter'  
}

$translation.GetEnumerator() | %{
    $text = $text -replace "(?<='$([regex]::Escape($_.Key))' => `")[^`"]*",$_.Value  
}

$text | sc $file
Mitglied: codeless
codeless 06.08.2020 um 19:34:56 Uhr
Goto Top
Ich glaube du hast nicht ganz verstanden was ich brauche.
Ich habe 5 PHP Dateien mit jeweils 300 Zeilen.
Ich möchte nur die Ausdrücke übersetzen, den Code unberührt lassen.

Ich denke Powergrep ist die beste Lösung in dem Fall.

Gruß. Und Danke für deine Mühe.
Mitglied: 145033
145033 06.08.2020 aktualisiert um 20:54:39 Uhr
Goto Top
Zitat von @codeless:

Ich glaube du hast nicht ganz verstanden was ich brauche.
Doch.
Ich möchte nur die Ausdrücke übersetzen, den Code unberührt lassen.

Genau das macht der PS Schnipsel oben ja , nur die entsprechenden Teile ersetzen 🙂.
Mitglied: codeless
codeless 07.08.2020 um 14:56:57 Uhr
Goto Top
Was ich in dem Script nicht verstehe wie die Übersetzung stattfinden soll. Ich habe dann eine Originaldatei und eine zweite datei mit den vorher extrahierten und übersetzten Audrücken die ich in die original Datei dann wieder einsetzen möchte.
Oder kann Powershell auch übersetzen das wäre für mich neu.
Mitglied: 145033
Lösung 145033 07.08.2020 aktualisiert um 16:32:38 Uhr
Goto Top
Zitat von @codeless:

Was ich in dem Script nicht verstehe wie die Übersetzung stattfinden soll. Ich habe dann eine Originaldatei und eine zweite datei mit den vorher extrahierten und übersetzten Audrücken die ich in die original Datei dann wieder einsetzen möchte.
Die Variable "$Translation" ist nur ein Beispiel für die Übersetzung innerhalb des Skripts, du kannst die Übersetzungen auch problemlos mit Get-Content aus einer Textdatei laden die so aussieht
'player_pause' = 'Pause'  
'player_play' = 'Abspielen'  
.....
...

und dann mit ConvertFrom-StringData in das Skript als Object laden und so nutzen wie oben gezeigt ...
Oder kann Powershell auch übersetzen das wäre für mich neu.
Nachbauen ist ja kein Thema wie du oben siehst! Aber auch eine automatische Online-Übersetzung wäre kein Problem, deswegen heißt es ja Powershell face-wink.