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

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

Printed on: April 20, 2024 at 05:04 o'clock

Mitglied: 140777
Solution 140777 Aug 20, 2019 updated at 12:09:54 (UTC)
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
Member: Henere
Henere Aug 20, 2019 at 12:40:48 (UTC)
Goto Top
Auf solche Fragen können nur gute Coder antworten, andere verstehen nicht mal die Eingangsfrage face-smile
Mitglied: 140777
140777 Aug 20, 2019 updated at 13:09:32 (UTC)
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 ...
Member: pieh-ejdsch
pieh-ejdsch Aug 21, 2019 at 22:08:05 (UTC)
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