Brauche Befehl die eine Datei auswählt, bei der der Name unterschiedlich sein kann
Hi kollegen,
es geht um folgendes:
ich möchte über den unten folgenden Befehl eine VHD Datei an Windows7 anfügen.
"select vdisk file="E:\WindowsImageBackup\%COMPUTERNAME%\Backup~1\e41ecb27-be3c-11de-9dcc-806e6f6e6963.vhd
attach vdisk"
Mein Problem ist dass diese bat dabei auf beliebig vielen PCs funktionieren soll.... das einzige was sich von rechner zu rechner ändert ist der Dateiname der .vhd datei. Wie muss also der Befehl lauten damit ich die Bat auf jedem rechner ausführen kann?
Ich hab wirklich schon viel gesucht und geguckt.... bin auch auf variablen und for tipps gestoßen. Leider bin ich eigentlich überhaupt kein Probgrammierer und kenne mich extrem wenig damit aus... vielleicht kann mir jemand den richtigen tipp geben! Danke im Vorraus!
Grüße aus Hannover
es geht um folgendes:
ich möchte über den unten folgenden Befehl eine VHD Datei an Windows7 anfügen.
"select vdisk file="E:\WindowsImageBackup\%COMPUTERNAME%\Backup~1\e41ecb27-be3c-11de-9dcc-806e6f6e6963.vhd
attach vdisk"
Mein Problem ist dass diese bat dabei auf beliebig vielen PCs funktionieren soll.... das einzige was sich von rechner zu rechner ändert ist der Dateiname der .vhd datei. Wie muss also der Befehl lauten damit ich die Bat auf jedem rechner ausführen kann?
Ich hab wirklich schon viel gesucht und geguckt.... bin auch auf variablen und for tipps gestoßen. Leider bin ich eigentlich überhaupt kein Probgrammierer und kenne mich extrem wenig damit aus... vielleicht kann mir jemand den richtigen tipp geben! Danke im Vorraus!
Grüße aus Hannover
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 129315
Url: https://administrator.de/contentid/129315
Ausgedruckt am: 08.11.2024 um 19:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo masterhinz!
Wenn der Pfad immer gleich ist und es jeweils nur eine .vhd-Datei gibt, sollte
genügen ...
Grüße
bastla
Wenn der Pfad immer gleich ist und es jeweils nur eine .vhd-Datei gibt, sollte
@echo off & setlocal
set "VHD="
for %%i in ("E:\WindowsImageBackup\%COMPUTERNAME%\Backup~1\*.vhd") do set "VHD=%%i"
if not defined VHD echo Keine Datei gefunden! & goto :eof
select vdisk file="%VHD%"
attach vdisk
Grüße
bastla
Hi
In der Regel ist es ja die größere der beiden vhds. Worum es mal 1 und mal 2 gibt weiß ich nicht. Ich würde gern die größere oder auch die neuere (ist die selbe vhd) einbinden.
Der Hintergrund ist das es verschieden PC s und auch mal leider 2 vhd sind die ich über eine Batch (dispart) mounten möchte. Wie gesagt bei einer vhd hab ich eine Lösung.
Gruß 0belixx
In der Regel ist es ja die größere der beiden vhds. Worum es mal 1 und mal 2 gibt weiß ich nicht. Ich würde gern die größere oder auch die neuere (ist die selbe vhd) einbinden.
Der Hintergrund ist das es verschieden PC s und auch mal leider 2 vhd sind die ich über eine Batch (dispart) mounten möchte. Wie gesagt bei einer vhd hab ich eine Lösung.
Gruß 0belixx
Hallo Obelixx!
Versuch es so:
Da die Dateigrößen vermutlich über 2.147.483.647 (= 2 ^ 31 - 1 und die größte posizive Zahl, mit der CMD rechnen bzw numerisch vergleichen kann) Bytes hinausgehen werden, erfolgt der Größenvergleich mit Strings (siehe die Anführungszeichen in der Zeile 13) - dazu müssen die Größenangaben (durch das Hinzufügen der führenden Nullen und das Verwenden der daraus resultierenden letzten 13 Stellen) auf die gleiche Länge gebracht werden.
[Edit] ... und das alles nach dem Motto: "Warum einfach, wenn's auch kompliziert geht?"
Alternative:
[/Edit]
Grüße
bastla
Versuch es so:
@echo off & setlocal
set "VHD="
set "Max=0"
for %%i in ("E:\WindowsImageBackup\%COMPUTERNAME%\Backup~1\*.vhd") do call :ProcessFile "%%i"
if not defined VHD echo Keine Datei gefunden! & goto :eof
select vdisk file="%VHD%"
attach vdisk
REM weitere Arbeitsschritte hier einfügen
goto :eof
:ProcessFile
for %%a in (%1) do set "Size=000000000000%%~za"
if "%Size:~-13%" gtr "%Max%" (
set "Max=%Size:~-13%"
set "VHD=%~1"
)
goto :eof
[Edit] ... und das alles nach dem Motto: "Warum einfach, wenn's auch kompliziert geht?"
Alternative:
@echo off & setlocal
set "Pfad="E:\WindowsImageBackup\%COMPUTERNAME%\Backup~1"
set "VHD="
for /f "delims=" %%i in ('dir /b/a-d/os "%Pfad%\*.vhd" 2^>nul') do set "VHD=%Pfad%\%%i"
if not defined VHD echo Keine Datei gefunden! & goto :eof
select vdisk file="%VHD%"
attach vdisk
Grüße
bastla
Hi bastla,
das klappt gut.
Vielen Dank 0belixx
Das ist jetz das Endresultat
Gruss 0belixx
das klappt gut.
Vielen Dank 0belixx
@echo off & setlocal
FOR /f %%f IN (c:\temp\lw.txt) DO set LW=%%f
echo %LW%
set "VHD="\
for /f "delims=" %%h in ('dir /b/a-d/os/s "%LW%\WindowsImageBackup\*.vhd" 2^>nul') do set "VHD=%%h"
if not defined VHD echo Keine Datei gefunden! & goto :failure
Echo select vdisk file="%VHD%" >>C:\Temp\01.txt
Echo attach vdisk >>C:\Temp\01.txt
Echo select partition 1 >>C:\Temp\01.txt
Echo assign Letter=x >>C:\Temp\01.txt
Echo select vdisk file="%VHD%" >>C:\Temp\02.txt
Echo select partition 1 >>C:\Temp\02.txt
Echo remove Letter =x >>C:\Temp\02.txt
Echo detach vdisk >>C:\Temp\02.txt
diskpart /s C:\Temp\01.txt
TIMEOUT /T 10 /NOBREAK >Nul
if %errorlevel% == 0 (goto :success) else (goto :failure)
:success
Echo %date% %time:~0,2%-%time:~3,2%-%time:~6,2% - "Image Prüfung --> OK" >>%LW%\image_log.log
::pause
goto :unmount
:failure
Echo %date% %time:~0,2%-%time:~3,2%-%time:~6,2% - "Fehler im Image" >>%LW%\image_log.log
goto :ende
:unmount
diskpart /s C:\Temp\02.txt
del C:\Temp\01.txt
del C:\Temp\02.txt
Das ist jetz das Endresultat
Gruss 0belixx