Batch - Dateinamen mit Zahl (nummeriert) anzeigen, um die Datei nachher über diese Zahl auszuwählen
Hi zusammen,
ich möchte für ein kleines Script eine Backupdatei zurückspielen, indem man nicht den Namen angibt sondern die Nummer.
Die Anzeige einer Zahl vor dem Backup habe ich bereits geschafft. Ich schaffe es aber nicht aus der Zahl einen Rückschluss auf den Dateinamen zu machen.
Habt ihr vielleicht Ideen?
Hier der Core für den "Zahlenanzeige":
Die bisherige Ausgabe:
Ermittelte Backups
0001 "Backup-05.02.2010-09.20.03-c1.2.147-p1.1.5.zip"
0002 "Backup-05.02.2010-09.15.05-c1.2.147-p1.1.5.zip"
0003 "Backup-05.02.2010-09.10.18-c1.2.147-p1.1.5.zip"
0004 "Backup-05.02.2010-08.57.18-c1.2.147-p1.1.5.zip"
0005 "Backup-05.02.2010-08.56.13-c1.2.147-p1.1.5.zip"
0006 "Backup-05.02.2010-08.54.53-c1.2.147-p1.1.5.zip"
0007 "Backup-05.02.2010-08.54.06-c1.2.147-p1.1.5.zip"
Waehlen Sie ein Backup-Archiv aus:
Der Rest will mir bisher nicht gelingen.
Vielen Dank für eure Vorschläge!
Gruß Reisszahn
ich möchte für ein kleines Script eine Backupdatei zurückspielen, indem man nicht den Namen angibt sondern die Nummer.
Die Anzeige einer Zahl vor dem Backup habe ich bereits geschafft. Ich schaffe es aber nicht aus der Zahl einen Rückschluss auf den Dateinamen zu machen.
Habt ihr vielleicht Ideen?
Hier der Core für den "Zahlenanzeige":
pushd "C:\Backup\"
set /a counter=10000
for /f "delims=" %%i in ('dir /b /O-D C:\Backup\Backup-*.zip') do call :ProcessDir "%%i"
popd
goto :chooseFile
:ProcessDir
set /a counter+=1
echo %counter:~-4% %1
goto :eof
:chooseFile
echo.
echo Waehlen Sie ein Backup-Archiv aus:
set/a filenumber= >nul
..
..
..
Die bisherige Ausgabe:
Ermittelte Backups
0001 "Backup-05.02.2010-09.20.03-c1.2.147-p1.1.5.zip"
0002 "Backup-05.02.2010-09.15.05-c1.2.147-p1.1.5.zip"
0003 "Backup-05.02.2010-09.10.18-c1.2.147-p1.1.5.zip"
0004 "Backup-05.02.2010-08.57.18-c1.2.147-p1.1.5.zip"
0005 "Backup-05.02.2010-08.56.13-c1.2.147-p1.1.5.zip"
0006 "Backup-05.02.2010-08.54.53-c1.2.147-p1.1.5.zip"
0007 "Backup-05.02.2010-08.54.06-c1.2.147-p1.1.5.zip"
Waehlen Sie ein Backup-Archiv aus:
Der Rest will mir bisher nicht gelingen.
Vielen Dank für eure Vorschläge!
Gruß Reisszahn
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 135845
Url: https://administrator.de/contentid/135845
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo Reisszahn!
Da Du ja durch das sortierte "
Anmerkungen:
Wenn Du ja per "
Mit dem "
Den "Umweg" über "
Eine Alternative wäre die Verwendung eines "Pseudoarrays" aus Variablen mit den Namen %Datei0001%, %Datei0002%, etc für die einzelnen Dateien.
Grüße
bastla
[Edit] Vergleich von "
Da Du ja durch das sortierte "
dir
" eine definierte Reihenfolge erhältst, kannst Du schematisch etwa so vorgehen::chooseFile
echo.
set "filenumber="
set /p filenumber=Waehlen Sie ein Backup-Archiv aus (Q fuer Abbruch):
if not defined filenumber echo Ungueltige Wahl! & goto :chooseFile
if /i "%filenumber:~,1%"=="q" popd & goto :eof
set /a number=filenumber
if %number% leq 0 echo Ungueltige Wahl! & goto :chooseFile
if %number% gtr %MaxNumber% echo Ungueltige Wahl! & goto :chooseFile
set "Filename="
set /a number-=1
for /f "delims=" %%i in ('dir /b /O-D Backup-*.zip^|more +%number%') do if not defined Filename set "Filename=%%i"
if not defined Filename echo Fehler! & popd & goto :eof
echo Gewaehlt: %Filename%
Wenn Du ja per "
pushd
" bereits im richtigen Ordner bist, brauchst Du diesen im "dir
"-Befehl nicht nochmals anzugeben (ansonsten verwende zumindest eine Variable dafür); mit einem "dir /s /b
" erhältst Du übrigens einen vollständigen Pfad ("Backup-*.zip"-Dateien in Unterordnern würden dann zwar auch berücksichtigt, aber die wird es ja vermutlich ohnehin nicht geben ...).Mit dem "
popd
" könntest Du bis zum Ende der ganzen Aktion warten (habe ich bei der "for
"-Schleife in Zeile 13 unterstellt).Den "Umweg" über "
more +n
" habe ich gewählt, weil ein "skip=0
" nicht klappt ...Eine Alternative wäre die Verwendung eines "Pseudoarrays" aus Variablen mit den Namen %Datei0001%, %Datei0002%, etc für die einzelnen Dateien.
Grüße
bastla
[Edit] Vergleich von "
==0
" auf "leq 0
" geändert - sicher ist sicher [/Edit]