bikalexander
Goto Top

Batch - mehrere Text-Dateien erstellen

Hallo Zusammen,


Ich habe folgenden Script:
@echo off

:metka

SET /p LPN=[Please scan/add LPN-nr.]
SET /p NumberOfBoxes=[Please add number of boxes/quantity]

echo %LPN%
echo %NumberOfBoxes%

if %LPN%==0 (goto:metka)

pause

Frage:
wie kann ich den Script um folgende Use case erweitern?


Use case 1:

Wenn %NumberOfBoxes% kleiner als 2 ist, dann Textdatei erstellen mit dem Inhalt aus %LPN%. Beispiel Dateiname: LPN123.TXT

Use case 2:

Wenn %NumberOfBoxes% größer 2 ist, dann:

so viele Text-Dateien erstellen wie es in %NumberOfBoxes% angegeben ist.

Beispiel %NumberOfBoxes% = 2, dann sollen 2 Text-Dateien erstellt werden:

  • LPN123.TXT (Inhalt aus %LPN%: LPN123)
  • LPN123-2.TXT (Inhalt aus %LPN%: LPN123-2)

Vielen Dank im Voraus!

Content-ID: 576722

Url: https://administrator.de/forum/batch-mehrere-text-dateien-erstellen-576722.html

Ausgedruckt am: 18.04.2025 um 16:04 Uhr

144260
144260 05.06.2020 aktualisiert um 09:12:17 Uhr
Goto Top
@echo off

:metka
SET /p LPN=[Please scan/add LPN-nr.]
SET /p NumberOfBoxes=[Please add number of boxes/quantity]

if "%LPN%"=="0" goto metka  
if "%NumberOfBoxes%"=="0" goto metka  

for /L %%a in (1 1 %NumberOfBoxes%) do (
	if %%a == 1 (
		echo.>"%LPN%.txt"  
	) else (
		echo.>"%LPN%-%%a.txt"  
	)
)
pause
miniversum
miniversum 05.06.2020 um 09:23:01 Uhr
Goto Top
Hallo,

Vergleichen of größer oder kleiner kannst du mit dem IF:
IF-Befehl folgendermaßen verändert:

    IF [/I] Zeichenfolge1 Vergleichsoperator Zeichenfolge2 Befehl
    IF CMDEXTVERSION Zahl Befehl
    IF DEFINED Variable Befehl

Mögliche Vergleichsoperatoren:

    EQU - gleich
    NEQ - nicht gleich
    LSS - kleiner als
    LEQ - kleiner als oder gleich
    GTR - größer als
    GEQ - größer als oder gleich

In eine Datei schreiben ist rein einfaches Echo mit umleitung der Ausgabe
echo Text > Datei.txt

Und mehrere Dateien erstellen kannst du indem du eine Schleife darum legst:
FOR /L %%i IN (1,1,5) DO echo Text in Datei-%%i.txt

Gruß
...
bikalexander
bikalexander 07.06.2020 um 09:55:14 Uhr
Goto Top
erstmal vielen Dank für schnelle und korrekte Antwort.

Frage (habe bei dem ersten Post vergessen zu erwähnen):
jede erstellte Datei sollte fixen Text vor und nach dem Inhalt ais der Variable %LPN%.

Wie kann ich es umsetzen?


Vielen Dank im Voraus!
144260
144260 07.06.2020 aktualisiert um 10:30:31 Uhr
Goto Top
Zitat von @bikalexander:
Frage (habe bei dem ersten Post vergessen zu erwähnen):
jede erstellte Datei sollte fixen Text vor und nach dem Inhalt ais der Variable %LPN%.
Und wo ist das Problem??
Wie kann ich es umsetzen?
Einfach zwei Variablen mit den Texten definieren und dann diese in den Echo Befehlen einsetzen, fertig.
Das bekommt auch ein Anfänger in zwei Minuten oben eingebaut.

Vielen Dank im Voraus!
Bitte.
bikalexander
bikalexander 07.06.2020 um 18:45:39 Uhr
Goto Top
Hast Recht, das liest sich so, als ob ich zu faul war was selber zu machen.

ich habe folgendes ausprobiert, aber diese Variante führt zu falschen Ergebnis:

@echo off

set "TEST=Beispieltext"  

:metka
SET /p LPN=[Please scan/add LPN-nr.]
SET /p NumberOfBoxes=[Please add number of boxes/quantity]

if "%LPN%"=="0" goto metka  
if "%NumberOfBoxes%"=="0" goto metka  

for /L %%a in (1 1 %NumberOfBoxes%) do (
	if %%a == 1 (
		echo.>"%LPN%.txt"  
	) else (
		echo.>"%LPN%-%%a.txt"  
		echo %TEST% >> %LPN%-%%a.txt
	)
)
pause

Frage:

kann es tatsächlich nur mit zusätzlichen echo gelöst werden, oder muss die Variable %LPN% vor dem ersten echo anderen Inhalt kriegen?

Vielen dank im Voraus!
144260
144260 07.06.2020 aktualisiert um 18:51:53 Uhr
Goto Top
@echo off
set "TEXT=BlaBlub"  

:metka
SET /p LPN=[Please scan/add LPN-nr.]
SET /p NumberOfBoxes=[Please add number of boxes/quantity]

if "%LPN%"=="0" goto metka  
if "%NumberOfBoxes%"=="0" goto metka  


for /L %%a in (1 1 %NumberOfBoxes%) do (
    if %%a == 1 (
        >"%LPN%.txt" (echo.%TEXT%%LPN%%TEXT%)  
    ) else (
        >"%LPN%-%%a.txt" (echo.%TEXT%%LPN%%TEXT%)  
    )
)
pause