freshman2017
Goto Top

Batchanpassung - andere Eingangsdatei

Hallo Ihr!

Was muss ich anpassen, damit die Eingangsdatei wie folgt aufgebaut sein kann?

1500..2000,2500..4000

Skript:

@echo off &setlocal EnableDelayedExpansion
set "infile=test.txt"  
set "outfile=test2.txt"  
set "step=2000"  
set "txt=150"  

for /f "usebackq tokens=1,2 delims=." %%i in ("%infile%") do set /a "begin=%%i, end=%%j"  
set "s=%txt%;%begin%.."  
set /a "n=begin, begin+=step"  

for /l %%i in (%begin% %step% %end%) do (
  set /a "d=%%i-n, n=%%i-1"  
  set "s=!s!!n!;!d!;%txt%;%%i.."  
  set /a "n=%%i"  
)

set /a "d=end-n+1"  
if %n%==%end% (set "s=%s:~,-2%;%d%;") else set "s=%s%%end%;%d%;"  

>"%outfile%" echo %s%  

Ausgangsdatei wäre wie folgt:

150;1500..2000;501;150;2500..4000;1501;

Beste Grüße

Content-ID: 486650

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

Ausgedruckt am: 24.11.2024 um 05:11 Uhr

140777
Lösung 140777 20.08.2019 aktualisiert um 14:09:54 Uhr
Goto Top
Autoreifen? Birnen? Für eine für jeden verständliche Erklärung war wohl mal wieder keine Zeit?! "Mit Stahlkappen in die Kronjuwelen tret ..."
@echo off &setlocal EnableDelayedExpansion
set "infile=test.txt"  
set "outfile=test2.txt"  
set "step=2000"  
set "txt=150"  

for /f "usebackq tokens=1,2 delims=," %%a in ("%infile%") DO (  
	call :process "%%a"  
	call :process "%%b"  
)

>"%outfile%" echo %final%  

goto :eof

:process

for /f "tokens=1,2 delims=." %%i in ("%~1") do set /a "begin=%%i, end=%%j"  
	
set "s=%txt%;%begin%.."  
set /a "n=begin, begin+=step"  

for /l %%i in (%begin% %step% %end%) do (
  set /a "d=%%i-n, n=%%i-1"  
  set "s=!s!!n!;!d!;%txt%;%%i.."  
  set /a "n=%%i"  
)

set /a "d=end-n+1"  
if %n%==%end% (set "s=%s:~,-2%;%d%;") else set "s=%s%%end%;%d%;"  
set "final=%final%%s%"  
exit /b
Henere
Henere 20.08.2019 um 14:40:48 Uhr
Goto Top
Auf solche Fragen können nur gute Coder antworten, andere verstehen nicht mal die Eingangsfrage face-smile
140777
140777 20.08.2019 aktualisiert um 15:09:32 Uhr
Goto Top
Jap, trotzdem sollte man sich die Mühe geben, er will ja Hilfe nicht wir. Wenn man sich immer erst alles selbst zusammenreimen muss nur weil der TO zu faul ist mal einen Satz mehr zu schreiben ...
pieh-ejdsch
pieh-ejdsch 22.08.2019 um 00:08:05 Uhr
Goto Top
Moin,
Die scripte passen beide (auch vom TO) NICHT zum erwarteten Ergebnis.
Die Berechnung von n (i-1) und d (range+1 oder einen weiteren Rest) ist anfangs falsch.
Eine Beispiel Ausgabe in etwa so:
txt;begin..end; range+1;nextRange+1;txt;usw...
Ich hör mal auf zu spekulieren...

Phil