TXT einlesen bearbeiten und in eine scr speichern
Hallo alle zusammen,
ich bräuchte wieder mal eure Hilfe.
Hier mein Problem
ich versuche folgenden txt Dateiinhalt einzulesen und in *.Scr (Script Datei) abzuspeichern
hier der txt inhalt
hier mein Code
und folgendes wird in die *.Scr Datei geschrieben
es passt so weit alle, bis auf die "ECHO ist ausgeschaltet (OFF).", hier sollten die Zeile leer wie bei der TXT sein!
THX
Grüße
Spidi-25
ich bräuchte wieder mal eure Hilfe.
Hier mein Problem
ich versuche folgenden txt Dateiinhalt einzulesen und in *.Scr (Script Datei) abzuspeichern
hier der txt inhalt
testzeile 1
testzeile 2
testzeile 3
testzeile 4
testzeile 5
testzeile 6
testzeile 9
testzeile 10
testzeile 11
testzeile 13
hier mein Code
@echo off & setlocal enableDelayedExpansion
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ V:\cmd\Test.txt') do (
for /L %%a in (3,1,80) do if %%i==%%a set neu=%%~j & echo !neu:Testzeile 6=Variable_Zeile!>>S1.scr
)
und folgendes wird in die *.Scr Datei geschrieben
testzeile 3
testzeile 4
testzeile 5
Variable_Zeile
ECHO ist ausgeschaltet (OFF).
ECHO ist ausgeschaltet (OFF).
testzeile 9
testzeile 10
testzeile 11
ECHO ist ausgeschaltet (OFF).
es passt so weit alle, bis auf die "ECHO ist ausgeschaltet (OFF).", hier sollten die Zeile leer wie bei der TXT sein!
THX
Grüße
Spidi-25
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 155999
Url: https://administrator.de/contentid/155999
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
24 Kommentare
Neuester Kommentar
Moin Spidi-25,
wenn das, was der Echo-Befehl ausgeben soll, auch "leer" oder "nichts" sein kann, dann geht das mit einem Punkt/einem Schrägstrich und ca 10 anderen Zeichen DIREKT nach dem Wort ECHO.
Beispiele
ECHO.
ECHO\
ECHO,
ECHO;
echo]
Etc.
GGF vorher am CMD-Prompt verdeutlichen. Keins der genannten Zeichen wird angezeigt, wenn der Rest NICHT leer ist.
Beispiel
Grüße
Biber
wenn das, was der Echo-Befehl ausgeben soll, auch "leer" oder "nichts" sein kann, dann geht das mit einem Punkt/einem Schrägstrich und ca 10 anderen Zeichen DIREKT nach dem Wort ECHO.
Beispiele
ECHO.
ECHO\
ECHO,
ECHO;
echo]
Etc.
GGF vorher am CMD-Prompt verdeutlichen. Keins der genannten Zeichen wird angezeigt, wenn der Rest NICHT leer ist.
Beispiel
>echo[hallo
hallo
Grüße
Biber
Hallo Spidi-25,
versuch's mal mit
Statt nach dem ECHO-Befehl ein Leerzeichen zu schreiben, nimm ein Gleichheitszeichen.
Gruß
Friemler
versuch's mal mit
@echo off & setlocal enableDelayedExpansion
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ Test.txt') do (
for /L %%a in (3,1,80) do if %%i==%%a set neu=%%~j & echo=!neu:Testzeile 6=Variable_Zeile!>>S1.scr
)
exit /b
ECHO=
erzeugt einen Zeilenumbruch (genauso wie z.B. ECHO.
oder ECHO\
oder ECHO:
, die hier vermutlich wegen der verzögerten Variablenerweiterung nicht funktionieren). ECHO(
würde auch gehen.Gruß
Friemler
Hallo Spidi-25!
Sorry - kann ich nicht nachvollziehen; mit den von Dir geposteten Testdaten und meinem Batchansatz sieht das Ergebnis bei mir so aus:
Es würde sich übrigens als (Batch-) Zeile 2 noch
anbieten - und mit
wird auch die letzte Zeile (die nicht mit einer Zeilenschaltung endet) erfasst.
Grüße
bastla
Sorry - kann ich nicht nachvollziehen; mit den von Dir geposteten Testdaten und meinem Batchansatz sieht das Ergebnis bei mir so aus:
testzeile 3
testzeile 4
testzeile 5
Variable_Zeile
testzeile 9
testzeile 10
testzeile 11
del S1.scr 2>nul
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" Test.txt') do (
Grüße
bastla
Hallo Spidi-25!
Eine Möglichkeit:
Grüße
bastla
Eine Möglichkeit:
@echo off & setlocal enableDelayedExpansion
del S1.scr 2>nul
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" Test.txt') do (
for /L %%a in (3,1,80) do if %%i==%%a (
set "neu=%%~j"
if not defined neu (
echo\
) else (
set "Leer=true"
for /f %%t in ("!neu!") do set "Leer="
if defined Leer (echo\) else (echo !neu:Testzeile 6=Variable_Zeile!)
)
)
)>>S1.scr
bastla
Hallo Spidi-25!
Auch das sieht bei mit anders aus: Für
erhalte ich mit der letzten Batch-Version als Ergebnis
Mit
weise ich der Variablen %Leer% (bzw hier eigentlich !Leer!) einen beliebigen Wert zu (muss also nicht "True" sein), um diese Variable als "Schalter" zu verwenden. Wenn die Zeile nicht leer ist (und daher der "
Grüße
bastla
P.S.: Falls es Dich nicht allzuviel Überwindung kostet : Ich würde die Schreibweise "Leerzeichen" bevorzugen ...
Auch das sieht bei mit anders aus: Für
testzeile 1
testzeile 2
testzeile 3
testzeile 4
testzeile 5
testzeile 6
testzeile 9
testzeile 10
testzeile 11
testzeile 13
testzeile 3
testzeile 4
testzeile 5
Variable_Zeile
testzeile 9
testzeile 10
testzeile 11
testzeile 13
set "Leer=true"
do
"-Teil der Schleife in Zeile 10 ausgeführt wird), wird dieser Wert gelöscht, woraufhin die Variable tatsächlich "leer" ist (also keinen Inhalt mehr hat), was sich per "if defined
" abfragen lässt ...Grüße
bastla
P.S.: Falls es Dich nicht allzuviel Überwindung kostet : Ich würde die Schreibweise "Leerzeichen" bevorzugen ...
[OT]
Moin bastla,
Hab ich schon gestern mühsam zurückgehalten, die Anmerkung "Das is' ja wieder ein Beitrag wie aus dem Leerbuch..."
Grüße
Biber
[/OT]
Moin bastla,
Zitat von @bastla:
P.S.: Falls es Dich nicht allzuviel Überwindung kostet : Ich würde die Schreibweise "Leerzeichen" bevorzugen ...
P.S.: Falls es Dich nicht allzuviel Überwindung kostet : Ich würde die Schreibweise "Leerzeichen" bevorzugen ...
Hab ich schon gestern mühsam zurückgehalten, die Anmerkung "Das is' ja wieder ein Beitrag wie aus dem Leerbuch..."
Grüße
Biber
[/OT]
Hallo zusammen,
noch ein paar Anmerkungen zum "sicheren" echo .
Bei dem echo= und echo: Varianten klappen zwar die Leerzeilen, dafür ist echo= aber anfällig für /?, es zeigt die echo-Hilfe an, statt /?
Ein echo\ oder echo: ist anfällig gegen \..\%~0 es startet die eigene Batchdatei.
echo., echo] oder echo[ klappt nicht sobald eine Datei Namens echo[, echo] oder echo. existiert.
echo( sollte immer funktionieren (ich hab vielleicht aber nur noch nicht den Fall gefunden, bei dem es fehlschlägt)
Hoffe es hilft
jeb
noch ein paar Anmerkungen zum "sicheren" echo .
Bei dem echo= und echo: Varianten klappen zwar die Leerzeilen, dafür ist echo= aber anfällig für /?, es zeigt die echo-Hilfe an, statt /?
Ein echo\ oder echo: ist anfällig gegen \..\%~0 es startet die eigene Batchdatei.
echo., echo] oder echo[ klappt nicht sobald eine Datei Namens echo[, echo] oder echo. existiert.
echo( sollte immer funktionieren (ich hab vielleicht aber nur noch nicht den Fall gefunden, bei dem es fehlschlägt)
Hoffe es hilft
jeb
Hallo Spidi-25!
Leider verstehe ich nicht genau, was Du erreichen willst - falls es eine Ersetzung für "Testzeile 10" nach dem Vorbild von "Testzeile 6" sein sollte, dann etwa so:
als Ersatz der Zeile 11 ...
Grüße
bastla
Leider verstehe ich nicht genau, was Du erreichen willst - falls es eine Ersetzung für "Testzeile 10" nach dem Vorbild von "Testzeile 6" sein sollte, dann etwa so:
if defined Leer (
echo\
) else (
set "neu=!neu:Testzeile 6=Variable_Zeile!"
set "neu=!neu:Testzeile 10=Variable_Zeile2!"
echo !neu!
)
Grüße
bastla
... nö
gibt doch keins mehr in der ausgabe.
sonst wäre doch Zeile 8 und Zeile 12 auch nicht gekommen
hier ist was für die CMD-Line
es kommt also drauf an ob die Forschleife im Satz etwas zu verwerten hat. - dann wird auch nach dem DO etwas ausgeführt
eine Leere Zeile ist eben nichts zum Verwerten - also nothing to DO
Du bist doch aber der BatchKing - schau mal in die NumberMe
Gruß Phil
gibt doch keins mehr in der ausgabe.
sonst wäre doch Zeile 8 und Zeile 12 auch nicht gekommen
hier ist was für die CMD-Line
for /f "tokens=*" %i in ("") do echo %i
for /f "tokens=*" %i in (" ") do echo %i
es kommt also drauf an ob die Forschleife im Satz etwas zu verwerten hat. - dann wird auch nach dem DO etwas ausgeführt
eine Leere Zeile ist eben nichts zum Verwerten - also nothing to DO
Du bist doch aber der BatchKing - schau mal in die NumberMe
Gruß Phil