Windows bat txt Dateien in Reihenfolge?

3 Antworten

Hier noch mal prinzipiell der gleiche Code wie in deiner anderen Frage, nur etwas auf deine anderen Anforderungen angepasst:

:main
call createUniqueName Test.txt
echo.Dein restlicher Code...
pause&exit

:createUniqueName <File>
set "return=%~f1"
if not exist "%~f1" exit /B 0
set /a i=0
:_createUniqueName
set /a i+=1
set "return=%~dpn1%i%%~x1"
if exist "%return%" goto _createUniqueName
exit /b %i%

Im Prinzip einfach : dir /b "test*.txt" listet alle Dateien dieses Musters . Leider würde auch testsinnlos.txt in das Schema passen.

Also entferne ich die Endung .TXT und den Wortteil "test". Übrig bleibt eine Zahl oder "sinnlos" etc.

Einfach noch testen ob es eine Zahl ist.

Wenn ja die bisher größte Zahl aussieben... um 1 erhöhen und an "test" anhängen und wieder .TXT dran fertig ist der neue Dateiname....

@echo off
setlocal EnableDelayedExpansion
set "lastnum=0"

for /f "tokens=*" %%a in ('dir /b "test*.txt"') do (
  echo gefunden: %%~na

  set "fName=%%~na"
    rem test aus Namen entfernen, was übrig bleibt sollte eine Zahl sein.
  set "diffName=!fname:test=!"
    rem test wirklich Zahl?
  set /a "zahl=!diffName!*1" 2>nul
  if "!zahl!"=="diffName" (
    if !zahl! gtr !lastnum! (
      rem die größte  Zahl in test*.txt finden...
      set "lastnum=!Zahl!"
    ) 
  )
 echo bisher hoechste Nummer ist !lastnum!
)

:erhoehe
set /a "newNum=%lastNum%+1"
rem neuen Dateinamen zusammensetzen.
set "newTestText="test%newNum%.txt"
  
echo Rumspinat ...blubb...hick > "%newBkupText%"
pause

Das ist wirklich ganz tief aus der Hüfte programmiert...

Sollte eigentlich klappen, aber ich kann es leider nicht testen. (Handy und Krankenhaus...)

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Welche dazugehörige Zahl? Eine fortlaufende?

Das sollte mit einer Schleife funktionieren und einem IF exists Test.

/

Alternativ eine Hilfsdatei mit der Zahl drin, die ausgelesen wird. Dann sparst du dir die Testschleife und musst den Inhalt dieser Datei immer nur +1 erhöhen