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-Key: 267522

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

Printed on: April 24, 2024 at 23:04 o'clock

Member: joehuaba
joehuaba Mar 26, 2015 updated at 15:16:55 (UTC)
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
Member: SKBadox
SKBadox Mar 27, 2015 at 12:22:54 (UTC)
Goto Top
Hallo face-smile

Das bringt mich leider nicht wirklich weiter :/

Hat niemand einen Codeschnipsel der mit eventuell hilft?

Grüße
Member: TsukiSan
TsukiSan Apr 01, 2015 at 09:32:59 (UTC)
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
Member: pieh-ejdsch
pieh-ejdsch Apr 05, 2015, updated at Apr 06, 2015 at 07:06:07 (UTC)
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