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

Dateiinhalte in Textdateien tauschen

Frage Entwicklung Batch & Shell

Mitglied: heimwerker

heimwerker (Level 1) - Jetzt verbinden

30.01.2011 um 18:04 Uhr, 2057 Aufrufe, 2 Kommentare

Hallo Forum

Ich habe ein Problem bei der Bearbetung von gleichartigen Textdateien.
Das folgende Programm funktioniert, leider nur mit einer einzigen Textdatei:

@echo off & setlocal enabledelayedexpansion
mode 90,60

:Start
cls
echo.
set /P Quelldatei= Dateiname der Quelldatei inkl. Endung:
prompt
if not exist %Quelldatei% @echo Die Quelldatei ist im Programmordner nicht vorhanden. & pause & goto :Start
echo.
set /P Zieldatei= Dateiname der Zieldatei inkl. Endung:
prompt
echo.
set /P SucheNach= Gesuchte Zeichenfolge:
prompt
echo.
set /P ErsetzeDurch= Zeichenfolge ersetzen durch:
prompt
echo.
echo.
for /f "delims=" %%i in ('findstr . "%Quelldatei%"') do (set Zeile=%%i & call :ersetzen !Zeile!)
goto :Ende

:ersetzen
set Zeile=!Zeile:%SucheNach%=%ErsetzeDurch%!
if [!Zeile!] equ [] (echo.>>%Zieldatei%) else (echo !Zeile!>>%Zieldatei%)
goto :eof

:Ende
del %Quelldatei%
ren %Zieldatei% %Quelldatei%
echo.
@echo Datei ist korrigiert.
pause
exit

Nun habe ich aber in einem ganzen Stapel von .asc's oder .csv's Änderungen vorzunehmen.
Gezielt suche ich z. B. nach "," und will es mit " " ersetzen.
Es müßte also jede *.asc abgearbeitet, der Originalname am Dateiende wieder hergestellt und die nächste .asc eingelesen werden.

Wer kann mir helfen, meine Denkblockade zu beseitigen?

Gruß und danke vorerst.
Mitglied: bastla
30.01.2011 um 18:47 Uhr
Hallo heimwerker und willkommen im Forum!

Unter der Annahme, dass die Ersetzung mit Deinem (übrigens nicht als Code formatierten) Batch tatsächlich funktioniert, könnte die Verarbeitung aller Dateien eines anzugebenden Typs (ungetestet )etwa so erfolgen:
01.
@echo off & setlocal enabledelayedexpansion 
02.
mode 90,60 
03.
 
04.
set /P QuelldateiTyp= Dateityp der Quelldatei (zB asc):  
05.
prompt 
06.
if not exist *.%QuelldateiTyp% echo Keine Quelldateien vorhanden. & pause & goto :eof 
07.
set /P SucheNach= Gesuchte Zeichenfolge: 
08.
prompt 
09.
echo. 
10.
set /P ErsetzeDurch= Zeichenfolge ersetzen durch: 
11.
prompt 
12.
echo. 
13.
echo. 
14.
 
15.
set "Zieldatei=%temp%\MitErsetzung.tmp" 
16.
for /f "delims=" %%a in ('dir /b /a-d *.%QuelldateiTyp%') do call :ProcessFile "%%a" 
17.
echo Alle Ersetzungen vorgenommen 
18.
pause 
19.
goto :eof 
20.
 
21.
:ProcessFile 
22.
for /f "delims=" %%i in ('findstr . %1) do (set Zeile=%%i & call :ersetzen !Zeile!) 
23.
move %Zieldatei% %1 
24.
goto :eof 
25.
 
26.
:ersetzen 
27.
set Zeile=!Zeile:%SucheNach%=%ErsetzeDurch%! 
28.
if [!Zeile!] equ [] (echo.>>%Zieldatei%) else (echo !Zeile!>>%Zieldatei%) 
29.
goto :eof
Nur interessehalber: Wozu sollen eigentlich die Zeilen mit "prompt" gut sein?

Grüße
bastla
Bitte warten ..
Mitglied: heimwerker
30.01.2011 um 19:36 Uhr
Danke für die nette Begrüßung, die schnelle Antwort und was soll ich dazu noch sagen, außer:
Den Seinen gibt's der Herr im Schlafe...

In der Zeile 20 mußte ich nur noch hinter %1 ein einfaches ' setzen und schon lief das Programm astrein durch.

Die prompt waren als Eingabeaufforderung gedacht, sind schon entfernt.

Ich bedanke mich nochmals für Deine Hilfe
Gruß
heimwerker
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst In allen Textdateien eines bestimmten Pfades die Zeilen x bis Ende löschen (2)

Frage von Schloth zum Thema Batch & Shell ...

Microsoft Office
gelöst VBA: Dateiinhalte in Abhängigkeit des Dateinamens importieren (4)

Frage von Booster07 zum Thema Microsoft Office ...

Batch & Shell
gelöst Per Skript Ordner überwachen und Textdateien editieren und verschieben (4)

Frage von ThorstenL zum Thema Batch & Shell ...

Speicherkarten
gelöst LSI RAID Controller gegen OnBoard Raid tauschen (Raid1) (8)

Frage von Maffi zum Thema Speicherkarten ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Statische Routen mit Shorewall, ISC-DHCP Server konfigurieren für Android Devices (24)

Frage von terminator zum Thema LAN, WAN, Wireless ...

Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

Hardware
16-20 Port POE Switch mit VLAN (16)

Frage von thomasreischer zum Thema Hardware ...

Windows Server
Exchange HyperV Prozessorlast (16)

Frage von theoberlin zum Thema Windows Server ...