supertux
Goto Top

Auflistung Verzeichnis in Auswahlmenü

Hallo,

ich habe mir ein Backupbatch erstellt, die mir jeden Tag eine Sicherung mit Sicherung_%DATUM%.zip erzeugt.

Nun hätte ich gerne eine Wiederstellungsbatch, die mir mit

dir /a:-d /b

die Sicherungen in einem Auswahlmenü auflistet und ich aus der Liste die passenden Nummer eingebe.
Der ausgewählte Dateiname sollte dann in einer Variable stehen, damit ich mit 7z.exe und dem Variablenamen entpacken kann.

Meine Backupbatch ist in der normalen CMD-Konsole erstellt, also kein Powershell-Script.

---
supertux

Content-ID: 665345

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

Ausgedruckt am: 25.11.2024 um 09:11 Uhr

H41mSh1C0R
H41mSh1C0R 02.04.2021 um 11:53:48 Uhr
Goto Top
Was hast du denn schon geschrieben?

VG
rubberman
rubberman 02.04.2021 um 12:42:40 Uhr
Goto Top
@echo off &setlocal
for /f "tokens=1* delims=" %%i in ('dir /a-d /b^|find /n /v ""') do (  
  echo %%i "%%~j"  
  set "file%%i=%%~j"  
)

echo(
set /p "n=Nummer: "  

setlocal EnableDelayedExpansion
echo "!file%n%!"  

pause
Steffen
Penny.Cilin
Penny.Cilin 02.04.2021 um 12:45:04 Uhr
Goto Top
Wo ist Dein Batchcode?

Und wenn Du ihn postest, dann setze diesen in Codetags.
Dazu gibt es links neben dem Editorfenster die Auswahl "Codeblock" (2. Symbol von unten) hinzufügen.

das steht auch in der Hilfe.
Und das
dir /a:-d /b
liest sich viel besser.

Gruss Penny.
supertux
supertux 02.04.2021 um 17:28:52 Uhr
Goto Top
Hallo Steffen,

vielen Dank.
Der Code funktioniert nur sollte er mir nicht alle Dateien sondern nur ZIP auflisten.
Habe schon versucht, zu ändern, dann werden zwar alle .ZIP Dateien aufgelistet, aber die Aufzählung passt nicht mehr.
Kann man das auch noch zu einem Loop bringen, damit man nur die aufgelistete Auswählen kann? und evtl. eine 0 für Exit?

supertux
supertux
supertux 02.04.2021 aktualisiert um 17:30:01 Uhr
Goto Top
Hallo,

da der Code aus einem anderen Forum stammt, wusste ich nicht ob ich den einfach hier posten darf.

supertux
GarfieldBonn
GarfieldBonn 02.04.2021 um 18:59:53 Uhr
Goto Top
Hi,
'dir   
ersetzen durch
'dir *.zip  
sollte funktionieren,
gruss
kh
rubberman
rubberman 02.04.2021 um 21:22:03 Uhr
Goto Top
Japp. Zusammen mit den vorhandenen Optionen, versteht sich.

@supertux Wenn du Batch noch nicht soweit verstanden hast, um solche Kleinigkeiten selbst hinzubekommen, dann fang um Himmels Willen in der heutigen Zeit nicht mehr an, mit dieser archaischen Sprache herum zu spielen. Es gibt keine eingeschränktere, schwierigere und auch keine die noch mehr Bugs hat.

Steffen
em-pie
em-pie 03.04.2021 um 10:36:11 Uhr
Goto Top
Moin,
Zitat von @rubberman:
Japp. Zusammen mit den vorhandenen Optionen, versteht sich.
@supertux Wenn du Batch noch nicht soweit verstanden hast, um solche Kleinigkeiten selbst hinzubekommen, dann fang um Himmels Willen in der heutigen Zeit nicht mehr an, mit dieser archaischen Sprache herum zu spielen. Es gibt keine eingeschränktere, schwierigere und auch keine die noch mehr Bugs hat.
FullACK.

Wenn du das alles mit der Powershell versuchst umzusetzen und dann etwas geübt bist, kannst du das später um eine GUI erweitern.
Damit kannst du dir dann die gefundenen "BackupFiles" in einer DropDown-Liste anzeigen lassen und dann weiter machen.
Nicht dass es erforderlich ist - erhöht letzten Endes nur den Comfort...
148121
148121 07.04.2021 aktualisiert um 15:07:14 Uhr
Goto Top
Die Batch lässt sich ja problemlos mit einem entsprechenden Auswahldialog ergänzen wenn es sein muss ...
@echo off
for /f %%a in ('powershell -EP Bypass -C "Add-Type -A System.Windows.Forms;$dlg=New-Object System.Windows.Forms.OpenFileDialog;$dlg.InitialDirectory = 'C:\';$dlg.Filter = 'Zip-Dateien | *.zip';if($dlg.ShowDialog() -eq 'OK'){return $dlg.FileNames}else{return $false}"') do @echo %%a  
rubberman
rubberman 07.04.2021 um 17:48:37 Uhr
Goto Top
Du kannst mit solchen PowerShell Aufrufen jede Menge an fehlender Funktionalität von Batch ausbügeln. Aber in punkto Performance verschlimmbesserst du das ganze nur noch. Bei jedem neuen Aufruf der PowerShell werden die ganzen Assemblies geladen, was schon lang genug dauert. Wenn du dann noch mit einem Add-Type und womöglich Plattform Invocation ran gehst, wird's noch verrückter, da dann C# Code in dein Temp Verzeichnis geschrieben, dieser zu einer DLL kompiliert und anschließend verwendet und wieder gelöscht wird. Ich kann nur dazu raten, gleich bei PowerShell zu bleiben, dann hast du nur einmal das Overhead...

Steffen
148121
148121 07.04.2021 aktualisiert um 18:00:50 Uhr
Goto Top
gleich bei PowerShell zu bleiben
Klar war ja auch nur eine weitere Möglichkeit wenn der TO aus welchen Gründen auch immer in der alten Batch-Höhle verweilen will/muss ...