batch mit diskpart schlägt manchmal fehl warum? und wie abfangen?
Hallo
Hallo
ich benutze folgendes script von Alexander Suhovey einem Laufwerk einen Buchstaben zuzuweisen.
Leider wird manchmal einfach einem anderen Volume als dem gewünschten "backup" der Buchstabe zugewiesen.
Problem1: Warum gibt diskpart das falsche volume zurück? -
Problem2: warum wird der Laufwerksbuchstabe zugewiesen obwohl nicht das volume "backup" selektiert ist.
Stimmt die Fehlerroutine in dem script nicht? kann man das verbessern?
Vielen Dank für die Hilfe!!
ciao
MIchael
script:
Hallo
ich benutze folgendes script von Alexander Suhovey einem Laufwerk einen Buchstaben zuzuweisen.
Leider wird manchmal einfach einem anderen Volume als dem gewünschten "backup" der Buchstabe zugewiesen.
Problem1: Warum gibt diskpart das falsche volume zurück? -
Problem2: warum wird der Laufwerksbuchstabe zugewiesen obwohl nicht das volume "backup" selektiert ist.
Stimmt die Fehlerroutine in dem script nicht? kann man das verbessern?
Vielen Dank für die Hilfe!!
ciao
MIchael
script:
@echo off
setlocal ENABLEDELAYEDEXPANSION
:: Full path to diskpart.exe. Defaults are:
:: Windows 2000: "C:\Program Files\Resource Kit\diskpart.exe"
:: 2003/XP: "C:\windows\system32\diskpart.exe"
set dp=c:\windows\system32\diskpart.exe
:: Volume label
set label=backup
:: Temporary command file for diskpart.exe
set dps="%TEMP%\dp.txt"
echo list volume>%dps%
echo exit>>%dps%
set label_short=%LABEL:~0,11%
if exist %dp% (
for /f "delims=" %%i in ('%dp% /s %dps%') do (
set string=%%i
if not "!string:%label_short%=!"=="!string!" (
set volnum=!string:~9,3!
set volnum=!volnum: =!
)
)
if not "!volnum!"=="" (
echo Volume Label: %label%
echo Volume Number: !volnum!
) else (
echo Cannot find volume with label %label%
)
) else (
echo Cannot find %dp%&goto :EOF
)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 101686
Url: https://administrator.de/contentid/101686
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
2 Kommentare
Neuester Kommentar
Moin GrEEnbYte,
ändere die Zeile 19
Von: for /f "delims=" %%i in ('%dp% /s %dps%') do (
Auf: for /f "delims=" %%i in ('%dp% /s %dps%') do if not defined volnum (
Dann sollte es passen.
Nicht sinnvoll finde ich, dass
Da ich die Internet-Quelle des schnipsels nicht kenne (allerdings auch nicht gesuchmaschint habe):
Vielleicht kannst du ja mal den "If not defined"-Verbesserungsvorshlag an den Autor weitermailen.
Grüße
Biber
ändere die Zeile 19
Von: for /f "delims=" %%i in ('%dp% /s %dps%') do (
Auf: for /f "delims=" %%i in ('%dp% /s %dps%') do if not defined volnum (
Dann sollte es passen.
Nicht sinnvoll finde ich, dass
- die temporäre diskpart-Skriptdatei (%dps%) nicht gelöscht wird am Ende
- das überhaupt erst mal irgendwas temporär angelegt wird, BEVOR die Prüfung erfolgt, ob Diskpart.exe irgendwo EXISTiert.
Da ich die Internet-Quelle des schnipsels nicht kenne (allerdings auch nicht gesuchmaschint habe):
Vielleicht kannst du ja mal den "If not defined"-Verbesserungsvorshlag an den Autor weitermailen.
Grüße
Biber