skbadox
Goto Top

Text Datei bis bestimmten String kopieren und auslagern

Hallo zusammen,

wie der Titel schon sagt suche ich nach einem .bat Skript dass vom Anfang der .txt Datei bis zu einem gewissen String sucht und diesen ganzen Abschnitt kopiert und in eine neue .txt Datei auslagert.

Weiß da jemand vielleicht was?face-smile

Grüße,
Badox

Content-ID: 267522

Url: https://administrator.de/contentid/267522

Ausgedruckt am: 24.11.2024 um 03:11 Uhr

joehuaba
joehuaba 26.03.2015 aktualisiert um 16:16:55 Uhr
Goto Top
So ein ähnliches Thema hatten wir vor 3 Tagen face-smile
Benutze eine Schleife und schreibe die Werte in eine andere Datei (.txt).
Das sollte dir dabei helfen:

Variable aus anderer Bat-Datei holen

Musst du natürlich noch ein bisschen umschreiben, aber im Prinzip ganz einfach.


Gruß joehuaba
SKBadox
SKBadox 27.03.2015 um 13:22:54 Uhr
Goto Top
Hallo face-smile

Das bringt mich leider nicht wirklich weiter :/

Hat niemand einen Codeschnipsel der mit eventuell hilft?

Grüße
TsukiSan
TsukiSan 01.04.2015 um 11:32:59 Uhr
Goto Top
Hallo SKBadox,

Falls es VBS sein darf:
PfadDatei1 = "TestInput.txt"  
Suchtext = "b ="  
PfadDatei2 = "TestOutput.txt"  
Set FSO = CreateObject("Scripting.FileSystemObject")  
MeineDaten = Split(FSO.OpenTextFile(PfadDatei1, 1).ReadAll, Suchtext)
If Ubound (MeineDaten) > 0 then
	FSO.CreateTextFile(PfadDatei2,True).Write(MeineDaten(0))
End If

Gruss

Tsuki
pieh-ejdsch
pieh-ejdsch 05.04.2015, aktualisiert am 06.04.2015 um 09:06:07 Uhr
Goto Top
moin SKBadox,

als Pure Batch:

<Quelldatei Batch "Zeichernfolge" >Augabedatei  
@echo off
:noOption
if "%~1" neq "" goto :nohelp  
echo Gibt eine Ausgabe bis zur angebenen Zeichenfolge&echo(
echo %~n0 ist mit Eingabeumleitung zu nutzen
echo %~n0 "Zeichenfolge" ^<Quelldatei [^>Zieldatei]&echo(  
echo    Zeichenfolge	die zu suchende Zeichenfolge wird mit FIND bestimmt
echo    		ohne AusgabeUmleitung Ausgabe im CMD Fenster
exit /b
:nohelp
setlocal disabledelayedexpansion
set "intemp=%temp%%time::=%"  
set "string=%~1"  
set "stringlength=0"  
:Laenge string bestimmen
for /f eol^=^

^ delims^= %%i in (' cmd /u /von /c "echo(!string!"^|find /v "" ') do set /a Stringlength += 1  

:Eingabe temporär speichern
>"%intemp%" find /n /v ""  

:suchen der Zeichenfolge und Zeile bestimmen und speichen
set "NRout="  
for /f "tokens=*delims=" %%a in (' find "%string%"^<"%intemp%" ') do if not defined NRout (set "LineStr=%%a"  
  for /f "delims=" %%b in ("%%a") do set "NRout=%%b"  
)
if not defined NRout >&2 echo Zeichenfolge nicht gefunden.& set /a xcode=1 &goto :end
if %NRout% gtr 1 call :Line
call :LineStr

:end
del "%intemp%"  
exit /b %xcode%

:LineStr Suche nur jeden ersten Buchstaben des Strings in der Treffer-Zeile dann Ausgabe bis dahin
for /f eol^=^

^ delims^= %%a in ('cmd /u /von /c "echo(!String!"^|findstr .') do (  
  for /f "delims=" %%i in (' cmd /u /von /c "echo(!LineStr!"^|find /n "%%a" ') do (  
    setlocal enabledelayedexpansion
    for /f %%n in ('set /a %%i-1') do if !LineStr:^~%%n^,%stringlength%! equ !string! (  
      set "Lineout=!LineStr:~0,%%n!!string!"  
      echo(!Lineout:*]=!
      exit /b
    )
) )
exit /b 

:Line vorige Zeilen ausgeben
for /f "usebackq tokens=* delims=" %%i in ("%intemp%") do (  
  for /f "tokens=1*delims=" %%n in ("%%i") do if %%n EQU %NRout%  exit /b  
  set "Line=%%i"  
  setlocal enabledelayedexpansion 
  echo(!Line:*]=!
  endlocal
)
exit /b

Gruß Phil