Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Per Batch in Dateizeilen nach Strings alles löschen

Frage Entwicklung Batch & Shell

Mitglied: Alme123

Alme123 (Level 1) - Jetzt verbinden

23.05.2013 um 19:35 Uhr, 2677 Aufrufe, 15 Kommentare

Hallo zusammen,

ich habe folgendes Problem:

ich habe eine sehr lange TextDatei (ca. 1300 Zeilen) in der folgendes steht (sehr kleiner Ausschnitt):

01.
language.name=Deutsch 
02.
language.region=Deutschland 
03.
language.code=de_DE 
04.
 
05.
gui.done=Fertig 
06.
gui.cancel=Abbrechen 
07.
gui.back=Back 
08.
gui.toMenu=Zurück zum Hauptmenü 
09.
gui.up=Hoch 
10.
gui.down=Runter 
11.
gui.yes=Ja 
12.
gui.no=Nein
Ein Batch (oder Vbscript) soll in allen Zeilen die "=" enthalten alles nach dem Gleichzeichen entfernen.

So sollte es danach aussehen:

01.
language.name= 
02.
language.region= 
03.
language.code= 
04.
 
05.
gui.done= 
06.
gui.cancel= 
07.
gui.back= 
08.
gui.toMenu= 
09.
gui.up= 
10.
gui.down= 
11.
gui.yes= 
12.
gui.no=

Vielen Dank im Vorraus,

Alme123
Mitglied: Endoro
23.05.2013, aktualisiert um 19:54 Uhr
Hallo Alme123,

wenn das nur ein kleiner Ausschnitt ist, was steht im restlichen Text: sind die Zeichenketten vor dem = unique? Gibts noch wo anders equal signs?

Gruss!
Bitte warten ..
Mitglied: Alme123
23.05.2013 um 19:58 Uhr
@Endoro

ja alle Zeichen vor dem = sind "normale" Textzeichen (also UTF-8 ohne BOM).
Nach dem = gibt es Sonderzeichen, vorher nicht.

Alme123
Bitte warten ..
Mitglied: rubberman
23.05.2013, aktualisiert um 20:35 Uhr
Hallo Alme123,

könnte so funktionieren:
01.
@echo off &setlocal 
02.
set "txtfile=test.txt" 
03.
set "newfile=neu.txt" 
04.
 
05.
setlocal EnableDelayedExpansion 
06.
<"!txtfile!" >"!newfile!" ( 
07.
  for /f %%i in ('type "!txtfile!"^|find /c /v ""') do for /l %%j in (1 1 %%i) do ( 
08.
    set "ln=" &set /p "ln=" 
09.
    if defined ln ( 
10.
      for /f "delims==" %%k in ("!ln!") do echo %%k= 
11.
    ) else ( 
12.
      echo( 
13.
14.
15.
)
Grüße
rubberman
Bitte warten ..
Mitglied: Endoro
23.05.2013, aktualisiert um 23:20 Uhr
Ich hab es mal mit sed gebaut. Es wird eine Sicherheitskopie .bak angelegt:

01.
@echo off&setlocal 
02.
sed  -i.bak "s/=.*/=/" file.txt
Gruss!

PS: @rubberman: ich weiss ja nicht, ob @Alme123 Sonderzeichen im Text hat. Aber nachdem dein Code drübergelaufen ist, könnten es einige weniger sein
Bitte warten ..
Mitglied: rubberman
23.05.2013 um 22:06 Uhr
Hallo Endoro,

Sonderzeichen würde ich nicht unbedingt vor dem = erwarten. Falls doch, findet sich auch dafür eine Lösung

Grüße
rubberman
Bitte warten ..
Mitglied: bastla
23.05.2013 um 22:33 Uhr
... und wenn's ein VBScript ist :
01.
Ein = "D:\test.txt" 
02.
Aus = "D:\neu.txt" 
03.
Delim = "=" 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
T = Split(fso.OpenTextFile(Ein).ReadAll, vbNewLine) 
07.
 
08.
For Each Z In T 
09.
    If InStr(Z, Delim) > 0 Then 
10.
        N = N & vbNewline & Split(Z, Delim)(0) & Delim 
11.
    Else 
12.
        N = N & vbNewline & Z 
13.
    End If 
14.
Next 
15.
 
16.
fso.CreateTextFile(Aus).Write Mid(N, 3)
Grüße
bastla
Bitte warten ..
Mitglied: Alme123
24.05.2013, aktualisiert um 05:21 Uhr
@rubberman , @bastla und @Endoro

leider macht mir @rubberman 's Script mir die Datei kaputt (entfernt einfach Satzteile mit . vor dem =)
@bastla 's Script fängt nur die ersten Zeilen an und meint Feierabend zu haben.

@Endoro
sed möchte einfach nicht funktionieren, ich habe Windows 7 64 Bit.

Alme123
Bitte warten ..
Mitglied: bastla
24.05.2013, aktualisiert um 09:09 Uhr
Hallo Alme123!
... fängt nur die ersten Zeilen an und meint Feierabend zu haben.
Du hast ja auch nur die ersten Zeilen gepostet ...

Was passiert denn genau, bis zu welcher Zeile (mit welcher Besonderheit) wird verarbeitet?

[Edit] Sollte Unicode ein Faktor sein, kannst Du es mit dieser Variante versuchen:
01.
Ein = "D:\test.txt" 
02.
Aus = "D:\neu.txt" 
03.
Delim = "=" 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
T = Split(fso.OpenTextFile(Ein, 1, 0, 1).ReadAll, vbNewLine) 
07.
 
08.
For Each Z In T 
09.
    If InStr(Z, Delim) > 0 Then 
10.
        N = N & vbNewline & Split(Z, Delim)(0) & Delim 
11.
    Else 
12.
        N = N & vbNewline & Z 
13.
    End If 
14.
Next 
15.
 
16.
fso.CreateTextFile(Aus, 2, 1, 1 ).Write Mid(N, 3)
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: Endoro
24.05.2013, aktualisiert um 08:17 Uhr
Zitat von Alme123:
@Endoro
sed möchte einfach nicht funktionieren, ich habe Windows 7 64 Bit.

Hallo Alme123,

der Pfad zur sed.exe muss im Script oder dem %path% eingefügt werden.

Gruss!
Bitte warten ..
Mitglied: Alme123
24.05.2013 um 13:49 Uhr
@bastla

Fehler in deinem "Edit" Script: Zeile 6 Zeichen 1: Ungültiger Prozeduraufruf oder ungültiges Argument. Code: 800A0005

Die Datei sieht so aus: http://wormstates.pytalhost.com/de_DE.lang
Datei herunterladen und so bitte testen.


Alme123
Bitte warten ..
Mitglied: Friemler
24.05.2013, aktualisiert 25.05.2013
Hallo Alme123,

noch eine Powershell-Lösung gefällig?
01.
$inFile = "D:\test.txt" 
02.
$outFile = "D:\neu.txt" 
03.
 
04.
$regExp = new-object System.Text.RegularExpressions.Regex("(\S+=)(\S+)") 
05.
 
06.
if (test-path $outFile) 
07.
08.
  remove-item $outFile 
09.
10.
 
11.
foreach ($line in get-content $inFile -encoding UTF8) 
12.
13.
  $matches = $regExp.match($line) 
14.
  $newLine = "" 
15.
   
16.
  if ($matches.success) 
17.
18.
    $newLine = $matches.groups[1].captures[0].toString() 
19.
20.
 
21.
  out-file -inputObject $newLine -encoding UTF8 -append $outFile 
22.
}
Ergebnis ist eine UTF8-Datei mit BOM. Wenn in Zeile 21 UTF8 durch Default ersetzt wird, wird eine ANSI-Datei geschrieben.


[EDIT]
... und wenn eine UTF8-Datei ohne BOM ausgegeben werden soll:
01.
$inFile = "D:\test.txt" 
02.
$outFile = "D:\neu.txt" 
03.
 
04.
$crlf = [System.Environment]::NewLine 
05.
$newContent = "" 
06.
 
07.
foreach ($line in get-content $inFile -encoding UTF8) 
08.
09.
  if ($line.Contains("=")) 
10.
11.
    $newContent += $line.Split("=")[0] + "=" + $crlf 
12.
13.
  else 
14.
15.
    $newContent += $line + $crlf 
16.
17.
18.
 
19.
$encoding = new-object System.Text.UTF8Encoding($False) 
20.
[System.IO.File]::WriteAllText($outFile, $newContent, $encoding)
Diese Version arbeitet auch schneller, weil die Ausgabedatei in einem Stück geschrieben wird.
[/EDIT]


Gruß
Friemler
Bitte warten ..
Mitglied: Alme123
24.05.2013 um 14:40 Uhr
@Friemler

danke, dein Script funktioniert! (Mit der http://wormstates.pytalhost.com/de_DE.lang Datei)

Danke auch an @bastla und @rubberman ,

Friemler's Script funktionierte beim ersten mal perfekt (bei mir hat es erst so funktioniert: Powershell(.exe) öffnen und "Set-ExecutionPolicy RemoteSigned" eingeben)


Alme123

[Theard closed]
Bitte warten ..
Mitglied: Friemler
24.05.2013 um 14:47 Uhr
Hallo Alme123,

man kann das Script auch so aufrufen:
 powershell -nologo -executionpolicy remotesigned -file "Scriptpfad.ps1"
Dadurch wird die Ausführung von Powershell-Scripts nur temporär erlaubt.

Gruß
Friemler
Bitte warten ..
Mitglied: bastla
24.05.2013 um 16:32 Uhr
Hallo Alme123!

Wenn Du gleich den Link zu dieser Datei gepostet hättest, anstatt alle Beteiligten raten zu lassen, ob und welche Formatierung / Sonderzeichen zu berücksichtigen wären (mein Script ist daran gescheitert, dass keine "Windows"-Zeilenschaltungen mit CR + LF, sondern nur LF verwendet werden), wäre das Thema gestern schon durch gewesen ...

... nicht zuletzt mit dieser Script-Version:
01.
Ein = "D:\de_DE.lang" 
02.
Aus = "D:\neu.txt" 
03.
Delim = "=" 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
T = Split(fso.OpenTextFile(Ein).ReadAll, vbLf) 
07.
 
08.
For Each Z In T 
09.
    If InStr(Z, Delim) > 0 Then 
10.
        N = N & vbLf & Split(Z, Delim)(0) & Delim 
11.
    Else 
12.
        N = N & vbLf & Z 
13.
    End If 
14.
Next 
15.
 
16.
fso.CreateTextFile(Aus).Write Mid(N, 2)

Grüße
bastla
Bitte warten ..
Mitglied: Endoro
24.05.2013 um 17:01 Uhr
Hallo Alme123,

läuft mit sed auch prima in gefühlt 1/100 sec. durch

Gruss!
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Änderungsdatum von Dateien vergleichen und ältere löschen (10)

Frage von 129528 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...