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
GELÖST

Einträge per Batch aus Datei löschen

Frage Entwicklung Batch & Shell

Mitglied: dave114

dave114 (Level 2) - Jetzt verbinden

02.06.2010, aktualisiert 11:33 Uhr, 4830 Aufrufe, 11 Kommentare

morgen allerseits,

Ich habe hier eine Datei die mehr als 4000 SMTPRoutes enthält.

Formatbeispiele:
Domain:IP
Domain:Hostname
.Domain:Hostname

Zwischen drin sind allerdings auch immer wieder Kommentare.

Formatbeispiel:
#Domain:Hostname
#(Lehrzeichen)bla bla

Ich würde gerne die Datei per Batch so bearbeiten (oder neu erstellen) das er mir alle Sachen die hinter dem Domainnamen stehen (also alles andere in der Zeile inklusive den : ) rauswirft oder die Sachen vor dem : in eine neue Datei schreibt.
Zusätzlich sollen auch die Kommentare (die jeweils mit einem # beginnen) entfert werden.

Da das ganz voraussichtlich jeden Monat neu gemacht werden muss will ich es niemanden zumuten das jedes Mal von Hand zu machen.

Ich würde mich über eure Hilfe freuen.

Mit freundlichen Grüßen
David


/edit:

Beispiele:

Ursprungsdatei:

archaeologie-xxx.de:15.62.xxx.xxx 
landesmuseum-xxx.de:10.18.xxx.xxx 
# Mai 2005 
museum-xxx.de:10.30.xxx.xxx 
# land-xxx.de 2009013001

Datei nach bearbeitung:

archaeologie-xxx.de 
landesmuseum-xxx.de 
museum-xxx.de
Mitglied: Edi.Pfisterer
02.06.2010 um 11:15 Uhr
Hallo!
Poste mal ein paar Zeilen aus Deiner Datei + wie die Datei danach aussehen sollte, dann können wir uns das ganze etwas leichter vorstellen und werden sicher eine Lösung finden...

lg
Bitte warten ..
Mitglied: Edi.Pfisterer
02.06.2010 um 11:44 Uhr
Hallo!
Versuch mal folgendes - ist zwar kein batch, aber sollte auch das machen, was Du willst:
(ist ungetestet, bitte zuerst an einer Sicherungskopie deiner Datei ausprobieren...)

Speichern unter *umbau.vbs*
01.
datei= "lindenbaum.txt" 
02.
 
03.
Set fs = CreateObject("Scripting.FileSystemObject") 
04.
 
05.
Set File = fs.OpenTextFile(datei , 1, true) 
06.
        Do While not file.AtEndOfStream 
07.
                           zeile = (file.ReadLine) 
08.
                            doppelpunkt = instr(zeile,":") 
09.
                            if doppelpunkt >= 1 then 
10.
                               zeile = left(zeile, doppelpunkt-1) & vbCrLf 
11.
                            end if 
12.
 
13.
                            raute = instr(zeile,"#") 
14.
                            if raute >= 1 then 
15.
                               zeile = "" 
16.
                            end if 
17.
 
18.
                         inhaltneu = inhaltneu & zeile 
19.
        Loop 
20.
 
21.
Set File = nothing 
22.
 
23.
set dateineu = fs.createtextfile(datei, true) 
24.
dateineu.write  inhaltneu 
25.
Set dateineu = nothing
Hoffe, das hilft Dir weiter
lg
Bitte warten ..
Mitglied: dave114
02.06.2010 um 11:52 Uhr
Respekt Edi

Läuft einwandfrei.

Das einzige was du mir noch verraten könntest wäre wie ich noch die Leerzeilen die durch das rauslöschen der Kommentare entstehen aus der Datei rausbekomme.

Vielen Dank.

David

/edit

und wenn du grad sonst nichts zu tun hast würde ich mich freuen wenn du den Quellcode ein wenig kommentieren würdest - ich bin nicht so die Leuchte in vbs .
Bitte warten ..
Mitglied: Edi.Pfisterer
02.06.2010 um 12:25 Uhr
Hallo!
Hab den "Fehler" bereits oben im Code ausgessert, bitte nochmal testen - Leerzeilen sollten nun keine mehr entstehen...

Zur kurzen Erklärung (muss wieder in den Unterricht zurück - es fällt relativ schnell auf, wenn der Lehrer weg ist

instr(WoWirdGesucht, WasWirdGesucht) liefert die Stelle, an der das gesuchte Zeichen/die Zeichenkette zum ersten mal vorkommt.
ergo: wenn 0, dann kommt das Zeichen gar nicht vor

Pseudocodemaessig also:
bis zeile 6 --> datei wird geöffnet
7 - zeile wird eingelesen
8 variable doppelpunkt sucht :
9 wenn er vorkommt wird in
10 variable zeile = von links beginnend bis zum doppelpunkt (exklusive diesem selbst)

13 gleiches wie beim doppelpunkt mit der #
15 wenn # vorkommt wird die zeile gelöscht
21 datei schliessen
24 datei neu anlegen

lg
Edi
Bitte warten ..
Mitglied: pieh-ejdsch
02.06.2010 um 12:26 Uhr
Hi dave,

eine Zeile im CMD reicht auch
01.
for /f "delims=:" %i in ('findstr /v ^# "D:\Original.txt"') do echo %i>>"D:\Veraenderte.txt"
sind sogar keine Leerzeilen dabei

Gruß Phil
Bitte warten ..
Mitglied: dave114
02.06.2010 um 12:38 Uhr
Edi leider erstellt er jetzt nur noch eine leere Datei

Was für ein Lehrer bist du?
Auch mal lustig wenn der Lehrer den Unterricht verlässt um ein bisschen zu surfen und Leuten im Forum zu helfen

Danke.
David
Bitte warten ..
Mitglied: Edi.Pfisterer
02.06.2010 um 12:49 Uhr
@ dave114: sorry, in der vorletzten Zeile war das "neu" verschluckt worden - im code oben bereits ausgebessert
@ pieh-ejdsch: so gehts natürlich auch
Nun meine Bitte an Dich: könntest du so nett sein, und den Code für uns kommentieren?
ich blick da leider nicht durch...

lg

/edit: hab ich oben überlesen: bin studierter Betriebswirt und Lehrer für selbiges und Wirtschaftsinformatik
Die SchülerInnen haben grad eine Arbeitsaufgabe und obwohl sie ja sehr sympatisch sind, ist es doch zu laaangweilig, ihnen beim Nachdenken zuzusehen...
Bitte warten ..
Mitglied: dave114
02.06.2010 um 13:03 Uhr
Danke für deine Lösung Phil.

Ich kann mich Edi anschließen und dich bitten uns den Code etwas zu erklären.

Und noch etwas:

Wie kann ich den Befehl in einer Batch verwenden?

Wenn ich z.B. die Batch über "call change.bat" aufrufe bekomme ich folgenden Fehler:

"i" ist syntaktisch an dieser Stelle nicht verarbeitbar.
@Edi
Ja das mit dem zugucken kann ich verstehen

Mit freundlichen Grüßen
David
Bitte warten ..
Mitglied: pieh-ejdsch
02.06.2010 um 13:27 Uhr
Gerne

FOR /F "Delims=:" %i in ('Befehl') do Anweisung %i
- gib mir die Ausgabe bis vor dem "Trennzeichen=:" als %Variable der in (Klammern stehenden Datei oder der "Zeichenfolge" oder des 'Befehles') Zeilen weise in %Variable aus

ECHO %Variable>>"Datei"
- gib %Variable in das CMDfenster aus
>>"Datei"
- Leite das ganze fortlaufend jeweils eine Neue Zeile in die "Datei" um

findstr /v ^# "D:\Original.txt"
- Durchsuche die Datei "D:\Original.txt" und gib [/V] NICHT die Zeilen welche [^] am Zeilenanfang ein [#] enthalten aus. Also nur die anderen Zeilen.

[Edit]um diese Zeile in einen *.CMD oder *.BAT zu starten müssen die FOR Variablen mit doppelt vorangestellten Prozentzeichen dargestellt werden.
also %%i
[/Edit]
Bitte warten ..
Mitglied: Edi.Pfisterer
02.06.2010 um 13:36 Uhr
Super erklärt!
Vielen Dank!!!

lg

@dave114
Ich glaube mich aus einer Vielzahl ähnlicher Vorfälle (ich tippe 10 Zeilen vbs, jemand kommt dann mit 1 Zeile daher ) daran zu erinnern, dass für eine batch-Datei folgendes gilt:
% wird zu %%
Bitte warten ..
Mitglied: dave114
02.06.2010 um 14:53 Uhr
Nochmal vielen Dank euch beiden.

Viele Grüße.
David
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (12)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...