Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Sonstiges » Frage/Hilfe bei BATCH-Programmierung in Windows 11 » Themenansicht

Autor Thread - Seiten: -1-
000
07.08.2025, 21:08 Uhr
Klaus



Hallo,
… bin am Verzweifeln ;)
Ich habe hier mehrere Text-Dateien (ASCII) in denen das Zeichen für Zeilenvorschub 0Ah mehrfach drin ist. Da soll aus allen Dateien raus.
Das könnte ja so eine Batchdatei unter Windows 11 evtl. erledigen, dachte ich mir.
Leider habe ich null Ahnung von Batchprogrammierung und bin auf die glorreiche Idee gekommen, mal die KI (ChatGPT) nach einer Lösung zu fragen.
Tatsächlich spuckt die etwas aus.
Aber evtl. mache ich einen großen Fehler, oder die KI verarscht mich ;)
Die vielen Textdateien Dateien und auch das Batchfile test.bat liegen alle im Verzeichnis F:\KORREKTUR
Nach dem Starten kommt aber folgende Fehlermeldung im Konsolenfenster.

Quellcode:

Das System kann den angegebenen Pfad nicht finden.
Das System kann den angegebenen Pfad nicht finden.
Das System kann die angegebene Datei nicht finden.
Fertig.
Hier zum Test eine Ausgabe vom aktuellen Pfad: F:\KORREKTUR
Drücken Sie eine beliebige Taste . . .


Hier nun der Batch-Code, den mir ChatGPT vorgesetzt hat:
Angepasst habe ich nur die Zeile
set "FOLDER=F:\KORREKTUR" und zur Kontrolle habe ich unten nochmal den aktuellen Pfad mit %CD% ausgeben lassen.

Quellcode:

@echo off
setlocal enabledelayedexpansion

:: Ordner mit den Textdateien anpassen
set "FOLDER=F:\KORREKTUR"

:: Alle .txt-Dateien im Ordner durchgehen
for %%F in ("%FOLDER%\*.txt") do (
    echo Bearbeite: %%F
    set "TEMPFILE=%%F.tmp"

    :: Zeilenweise lesen und "0ah" entfernen
    (
        for /f "usebackq delims=" %%A in ("%%F") do (
            set "line=%%A"
            set "line=!line:0ah=!"
            echo !line!
        )
    ) > "!TEMPFILE!"

    :: Originaldatei ersetzen
    move /Y "!TEMPFILE!" "%%F" >nul
)

echo Fertig.
echo.
echo Hier zum Test eine Ausgabe vom aktuellen Pfad: %CD%
pause


Vielleicht ist hier jemand der das durchschaut, warum die Fehlermeldung kommt, oder eine andere Idee oder einfache Lösung hat, bei den vielen Text Dateien mit einem Rutsch alle 0Ah zu entfernen.

Danke und viele Grüße,
Klaus

Dieser Beitrag wurde am 07.08.2025 um 21:12 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
07.08.2025, 22:05 Uhr
PIC18F2550

Avatar von PIC18F2550

Lösch mal die Zeile mit echo off dann siehst du mehr.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen

Dieser Beitrag wurde am 07.08.2025 um 22:08 Uhr von PIC18F2550 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
07.08.2025, 22:31 Uhr
Rüdiger
Administrator
Avatar von Rüdiger


Zitat:
Klaus schrieb
Ich habe hier mehrere Text-Dateien (ASCII) in denen das Zeichen für Zeilenvorschub 0Ah mehrfach drin ist. Da soll aus allen Dateien raus.




Ich würde die Datei in Notepad++ öffnen, Suchen -> Ersetzen: \n durch nichts.
Kann ich Dir bei Bedarf auch machen, wenn Du mir die Datei schickst.
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
07.08.2025, 23:10 Uhr
Klaus



@Rüdiger
Danke für das Angebot, aber eine Datei ist kein Problem.
Das bekomme ich auch mit HEXDEIT und der Replace Funktion hin.
Hier geht es aber um sehr viele Text Dateien in einem Verzeichnis, deshalb die Idee mit dem Batchfile.

@PIC18F2520
Scheint was mit dem TEMPFILE faul zu sein.
Aber was?
Hier mal die Ausgabe ohne @echo off


Quellcode:

F:\KORREKTUR>setlocal enabledelayedexpansion
F:\KORREKTUR>set "FOLDER=F:\KORREKTUR"
F:\KORREKTUR>for %F in ("F:\KORREKTUR\*.txt") do (
echo Bearbeite: %F
set "TEMPFILE=%F.tmp"
(
for /F "usebackq delims=" %A in ("%F") do (
set "line=%A"
set "line=!line:0ah=!"
echo !line!
)
) 1>"!TEMPFILE!"
F:\KORREKTUR>(
echo Bearbeite: F:\KORREKTUR\4.txt
set "TEMPFILE=F:\KORREKTUR\4.txt.tmp"
(
for /F "usebackq delims=" %A in ("F:\KORREKTUR\4.txt") do (
set "line=%A"
set "line=!line:0ah=!"
echo !line!
)
) 1>"!TEMPFILE!"
Das System kann den angegebenen Pfad nicht finden.
F:\KORREKTUR>(
echo Bearbeite: F:\KORREKTUR\5.txt
set "TEMPFILE=F:\KORREKTUR\5.txt.tmp"
(
for /F "usebackq delims=" %A in ("F:\KORREKTUR\5.txt") do (
set "line=%A"
set "line=!line:0ah=!"
echo !line!
)
) 1>"!TEMPFILE!"
Das System kann den angegebenen Pfad nicht finden.
F:\KORREKTUR>move /Y "!TEMPFILE!" "%F"  1>nul
Das System kann die angegebene Datei nicht finden.
F:\KORREKTUR>echo Fertig.
Fertig.
F:\KORREKTUR>echo.

F:\KORREKTUR>echo Hier zum Test eine Ausgabe vom aktuellen Pfad: F:\KORREKTUR
Hier zum Test eine Ausgabe vom aktuellen Pfad: F:\KORREKTUR
F:\KORREKTUR>pause
Drücken Sie eine beliebige Taste . . .



Danke Euch Beiden.
Viele Grüße,
Klaus

Dieser Beitrag wurde am 07.08.2025 um 23:13 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
08.08.2025, 07:10 Uhr
Bert



Gibt es das Linux-Subsystem für Windows noch?
Da könnte man u.a. die Befehle/Programme recode oder iconv verwenden:
https://wiki.ubuntuusers.de/Zeichensatz-Konverter/#Konvertierung-auf-der-Kommandozeile
--
Viele Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
08.08.2025, 09:23 Uhr
Rüdiger
Administrator
Avatar von Rüdiger


Zitat:
Klaus schrieb
Hier geht es aber um sehr viele Text Dateien in einem Verzeichnis, deshalb die Idee mit dem Batchfile.



Dir ist bewusst, dass Notepad++ die Ersetzung auch auf ein Verzeichnis voll Dateien anwenden kann?
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
08.08.2025, 12:24 Uhr
PIC18F2550

Avatar von PIC18F2550

wird Tempfile erzeugt?

Ist die txt datei schrei geschützt?
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
08.08.2025, 12:26 Uhr
MiRa



Hallo Klaus,
probier mal:

@echo off
setlocal enabledelayedexpansion

set "FOLDER=F:\KORREKTUR"

for %%F in (%FOLDER%\*.txt) do (
echo Bearbeite: %%F
set "TEMPFILE=%FOLDER%\%%~nF.tmp"

(
for /f "usebackq delims=" %%A in ("%%F") do (
set "line=%%A"
set "line=!line:0ah=!"
echo !line!
)
) > "!TEMPFILE!"

move /Y "!TEMPFILE!" "%%F" >nul
)

echo Fertig.
echo.
echo Hier zum Test eine Ausgabe vom aktuellen Pfad: %CD%
pause

Dieser Beitrag wurde am 08.08.2025 um 12:26 Uhr von MiRa editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
08.08.2025, 12:54 Uhr
Klaus



Hallo,

erst einmal vielen Dank, dass Ihr für mich mitdenkt und Vorschläge parat habt.

@Bert
Linux ist leider nicht auf meinen Kisten und ich habe auch keine Ahnung davon ;(

@Rüdiger
Das mit dem Notepad++ und Ersetzung von mehreren Dateien wusste ich nicht. Ich habe das Programm bis dato auch noch nicht genutzt. Muss ich mal testen.

@PIC18F2550
Temp-File wurde keins erzeugt. Schreibgeschützt sind die Text-Dateien nicht.

@MiRa
Cool… die Batch Datei läuft ohne Fehlermeldung und in den diversen Text-Dateien, werden die 0Ah auch alle gefunden. Leider werden die 0Ah nicht gelöscht, sondern durch ein 0Dh 0Ah ersetzt.

Ich denke mal, auf dieses ChatGPT kann man sich aktuell noch nicht verlassen.
Möglicherweise habe ich die Frage auch falsch formuliert.

@alle
Inzwischen habe ich einen anderen Weg beschritten, da ich die vielen Textdateien eh am Stück brauchte. Also alle zusammengefasst und in der entstanden einen großen Datei dann mit HEXEDIT die 0Ah entfernt.
Klar … auf die Idee hätte auch gleich kommen können, aber manchmal klemmt es eben in der alten Rübe schon gewaltig ;(

Wofür ich das gebraucht habe, verrate ich später mal (… nur ein kleines Experiment).

Ich danke Euch allen nochmal und denke das Thema ist somit erledigt.

Viele Grüße,
Klaus

Dieser Beitrag wurde am 08.08.2025 um 12:56 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
08.08.2025, 13:02 Uhr
Rüdiger
Administrator
Avatar von Rüdiger


Zitat:
Klaus schrieb
Das mit dem Notepad++ und Ersetzung von mehreren Dateien wusste ich nicht. Ich habe das Programm bis dato auch noch nicht genutzt. Muss ich mal testen.



Grobe Schrittfolge: Dateien im Explorer markieren und ins Notepad++-Fenster ziehen.
Auf <Pi> in der Symbolleiste klicken, um alle Steuerzeichen anzuzeigen.
Suchen -> Ersetzen "\n" durch nichts
<Suchmodus=Erweitert>
<Alle Funde in allen offenen Dateien>.

Ich würde das an Deiner Stelle erst mal an einer Einzeldatei üben.

Wenn alles zufriedenstellend war: Datei -> Alle Speichern.


Sollte Dein Ziel sein, nicht alle Zeilenvorschübe zu entfernen, sondern nur doppelte Zeilenvorschübe zu reduzieren, dann ersetze "\n\n" durch "\n".
--
Kernel panic: Out of swap space.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
08.08.2025, 15:34 Uhr
Klaus



Hallo Rüdiger,

vielen Dank für die Anleitung.
Ich werde das bei Gelegenheit probieren.

Es waren mehr als 6500 Dateien, wo das 0Ah raus musste.
Am Ende war es dann nur eine Datei wo mehr als 150000 0Ah entfernt wurde.
Wofür das Ganze…. Naja, wieder einmal eine Spielerei von mir.

Siehe den Beitrag in einem anderen Thread.
https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=22549#258681

Danke und viele Grüße,
Klaus

Dieser Beitrag wurde am 08.08.2025 um 21:07 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
11.08.2025, 16:56 Uhr
Klaus



Hallo Rüdiger,

nur zur Info.
ich habe gestern Abend mal Deine Variante mit dem Notepad++ probiert.
Jawoll... funktioniert.
Ist zwar bei mehr als 6500 Dateien etwas lahm, aber es geht.
Alle Dateien wurden einzeln korrigiert.
Danach habe ich mit "copy *.txt badap1.bin die vielen Einzeldateien zu einer zusammengefasst.
Das Ergebnis deckt sich auch mit der von mir erzeugten Datei.
Alle 0Ah sind entfernt.

Ich hatte mich übrigens unter 008 vertan.
Nicht HEXEDIT, sondern Tiny Hexer hatte ich genutzt, um aus der großen Date alle 0Ah zu eliminieren.

Danke und viele Grüße,
Klaus

Dieser Beitrag wurde am 11.08.2025 um 16:57 Uhr von Klaus editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Sonstiges ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek