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

Zeilen aus TXT Datei auslesen und in neue einfügen

Frage Entwicklung Batch & Shell

Mitglied: killinator007

killinator007 (Level 1) - Jetzt verbinden

18.11.2010 um 16:18 Uhr, 5321 Aufrufe, 10 Kommentare

Hallo Zusammen,

ich habe eine TXT Datei mit vielen hundert Zeilen. Jetzt soll mir im optimalfall eine Batchdatei jede einzelne Zeile dieser TXT Datei in eine neue TXT schreiben.

Mein Problem ist nur, es gibt hier ähnliche Lösungsansätzte mit For und findstr nur kann ich
mir daraus nichts zusammenreimen. Wenn jemand von euch vielleicht kurz Zeit findet und mir eine solche
Batch zeigt bzw. wie eine solche mit For und findstr in meinem Fall aufgebaut wäre?

folgendes hab ich mir schon zusammengecopyundpastet

for /f "tokens=1,2 delims=:" %%i in ('findstr /n "." importmanuell.txt') do @for /f %%x in ('set /a %%i %%') do @if %%x==0 %j>>new.txt"

Danke + Gruß
Mitglied: bastla
18.11.2010 um 18:52 Uhr
Hallo killinator007!
Jetzt soll mir im optimalfall eine Batchdatei jede einzelne Zeile dieser TXT Datei in eine neue TXT schreiben.
Liest sich zunächst wie die Beschreibung eines "copy" ...

Wenn ich Deinen Batchansatz allerdings richtig interpretiere, war das doch eher so gemeint, dass pro Zeile (Leerzeilen ausgenommen) eine neue Datei erstellt werden soll - im (hinsichtlich der Benennung der neuen Dateien) einfachsten Fall daher:
for /f "tokens=1* delims=:" %%i in ('findstr /v "^$" importmanuell.txt^|findstr /n "^"') do >%%i.txt echo %%j
Grüße
bastla
Bitte warten ..
Mitglied: micneu
19.11.2010 um 18:55 Uhr
wie soll der dateiname jerder neu erstellten datei sein?

gruß michael
Bitte warten ..
Mitglied: micneu
19.11.2010 um 19:16 Uhr
habe ein powershellscript version erstellt.

01.
#   ************************************************************** 
02.
#   1fileToAnyFile 
03.
04.
#    einmal auf der powershell ausgeführt werden 
05.
#     "Set-ExecutionPolicy Unrestricted" 
06.
#   ************************************************************** 
07.
#     
08.
#   ************************************************************** 
09.
#   * Erstellt M.N. - POWERSHELL / Entwicklung   19.11.2010      * 
10.
#   *  
11.
#   ************************************************************** 
12.
 
13.
$ErrorActionPreference = 'SilentlyContinue' 
14.
$QUELLE = "c:\Temp" 
15.
$EXTENSION = "*.tif" 
16.
$ZIEL = "C:\Temp" 
17.
$FILE = "logfile2.txt" 
18.
$ZAEHLER = 1 
19.
$TEXT = Get-Content $QUELLE\$FILE 
20.
foreach ($i in $TEXT) {     
21.
    echo "$ZAEHLER : $i" 
22.
    $i > $ZIEL\$ZAEHLER.txt 
23.
    $ZAEHLER = $ZAEHLER+1     
24.
    }
die dateien habe ich einfach nur durchnummeriert

gruß michael
Bitte warten ..
Mitglied: meinzelmax
25.06.2011 um 18:53 Uhr
Zitat von bastla:
for /f "tokens=1* delims=:" %%i in ('findstr /v "^$" 
> importmanuell.txt^|findstr /n "^"') do >%%i.txt echo %%j 
> 

Der Code funktioniert bei mir sehr gut als Batch, allerdings würde ich gern die Dateinamen abhängig von einem bestimmten Zeileninhalt machen. Zum Beispiel:

Inhalt der Ursprugngsbatch.txt:
8354203747293620173/Erster.Text.temp
72629ß1897826322032/Zweiter-Text.temp
0246834072309222044/3ter-oder100er-text.temp

nun kommt die der wunderbare code zum einsatz (vielen dank schonmal dafür!!!): for /f "tokens=1* delims=:" %%i in ('findstr /v "^$" Ursprugngsbatch.txt^|findstr /n "^"') do >%%i.txt echo %%j

der dateiinhalt ist für mich passend:

Inhalt der 1.txt:
8354203747293620173/Erster.Text.temp

usw.

aber ich brauche den entsprechenden dateinamen dazu:
Erster.Text.txt

also jeweils die Zeichenfolge zwischen "/" und ".temp" aus der jeweiligen Textdatei.

wenn das irgendwie möglich sein sollte, wäre ich sehr dankbar für einen tip. ich bin anfänger auf diesem gebiet und google konnte mir bisher leider noch nicht weiterhelfen
Bitte warten ..
Mitglied: bastla
25.06.2011 um 20:14 Uhr
Hallo meinzelmax und willkommen im Forum!

Soferne alle Deine Zeilen nach dem selben Schema zusammengesetzt sind (es also jeweils genau ein Trennzeichen "/" und einen wegzulassenden Teil ".temp" am Ende gibt), sollte das (ungetestet) so gehen:
for /f "usebackq tokens=1-2 delims=/" %%i in ("D:\Ein Ordner\Ursprugngsbatch.txt") do >%%~nj.txt echo %%i/%%j
Kurze Erklärung:
Es werden alle Zeilen der "Ursprungsbatch.txt" anhand des Trennzeichens "/" aufgeteilt, sodass die Variable %%i den Teil vor dem ersten Trennzeichen (=token #1) und %%j jenen zwischen erstem und zweitem (das es aber nicht geben sollte) Trennzeichen (=token #2) enthält.

Mit der Schreibweise ("%%~nj") wird %%j als Dateipfad betrachtet und nur der reine Namensanteil isoliert (siehe dazu "for /?") - es wird also alles ab dem letzten "." (= Dateityp) weggelassen.

Anhand dieses Namens wird im aktuellen Ordner (Du könntest aber natürlich auch einen Pfad davor angeben, also etwa >"D:\Ein anderer Ordner\%%~nj" schreiben) eine entsprechend benannte Datei erstellt, in welche beide Teile der Zeile samt Trennzeichen (daher %%i/%%j) geschrieben werden.

Grüße
bastla
Bitte warten ..
Mitglied: meinzelmax
26.06.2011 um 00:18 Uhr
hallo bastla,

vielen dank erstmal. das klapp gut. wie du aber geschrieben hast, darf nur ein "/" enthalten sein. bei einigen datensätzen ist das jedoch nicht so, wie ich grad festgestellt habe. es gibt zum manchmal sogar 5 oder 6 stück, sorry das ist mir vorhin leider entgangen.
trotzdem vielen dank.
die endung ist allerdings immer die selbe. ich werde mal versuchen, ob ich das darüber hinkriege. ich müsste als von der endung ".temp" bis zum ersten "/" zurücklesen. weisst du, über welchen befehl das gehen könnte?

gruß mmax
Bitte warten ..
Mitglied: bastla
26.06.2011 um 00:23 Uhr
Hallo meinzelmax!

Wenn der Dateiname zwischen dem ersten und zweiten "/" zu finden wäre, dann:
for /f "usebackq delims=" %%i in ("D:\Ein Ordner\Ursprugngsbatch.txt") do for /f "tokens=2 delims=/" %%a in ("%%i") do >%%~na.txt echo %%i
- ansonsten wäre eine genauere Beschreibung der möglichen Zeilenstruktur (bzw konkrete Beispiele) hilfreich ...

[Edit] Um von .temp bis zum ersten "/" zurückzulesen könnte das so gehen:
01.
@echo off & setlocal 
02.
set "Ausgangsdatei=Ursprungsbatch.txt" 
03.
set "Kennung=.temp" 
04.
set "Endung=txt" 
05.
 
06.
for /f "usebackq delims=" %%i in ("%Ausgangsdatei%") do for /f "tokens=1* delims=/" %%a in ("%%i") do set "Name=%%b" & call :ProcessLine "%%i" 
07.
goto :eof 
08.
 
09.
:ProcessLine 
10.
call set "Rest=%%Name:*%Kennung%=%%" 
11.
call set "Dateiname=%%Name:%Kennung%%Rest%=%%" 
12.
>%Dateiname%.%Endung% echo %~1 
13.
goto :eof
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: meinzelmax
26.06.2011 um 00:35 Uhr
konkrete beispiele sind die hier:

835420/o.doc/i20/000/Erster.Text.temp
~274534:00/uc/Zweiter-Text.temp
dd/e83/023744/jsl/102/Dritter-Text.temp

das ist also schon ziemlich heterogen und der gewünschte dateiname liegt nicht zwischen zwei "/" sondern zwischen einem "/" und einem ".temp".

danke für deine mühe!
Bitte warten ..
Mitglied: bastla
26.06.2011 um 00:44 Uhr
Hallo meinzelmax!

Soferne der Dateiname immer nach dem letzten "/" folgt, etwa so:
01.
@echo off & setlocal 
02.
set "Ausgangsdatei=Ursprungsbatch.txt" 
03.
set "Endung=txt" 
04.
 
05.
for /f "usebackq delims=" %%i in ("%Ausgangsdatei%") do >%%~ni.%Endung% echo %%i
Da Windows auch mit "/" anstatt "\" als Trennzeichen zwischen Pfad und Dateiname zurechtkommt, wird hier einfach die gesamte Zeile als Dateipfad interpretiert und daraus der Dateiname (ohne Typ ".temp") extrahiert.

Grüße
bastla
Bitte warten ..
Mitglied: meinzelmax
26.06.2011 um 00:50 Uhr
genial!! es scheint für alle einträge meiner logs zu funktionieren.
vielen vielen dank!! und eine gute nacht!!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Microsoft Office
Excel Dateien durchsuchen und Werte einzeln in neue Excel Datei auslesen (1)

Frage von krischanii zum Thema Microsoft Office ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...