[XP] mountvol.exe - if abfrage in batchdatei

vulgo

Captain
Registriert
Sep. 2006
Beiträge
3.101
ich habe mir eben zwei kleine batchdateien geschrieben in denen einmal dem internen cardreader alle laufwerksbuchstaben entfernt/ungemountet werden und eine zweite in der ich dem entsprechenden geräten wieder die richtigen zuweise.

nun möchte ich gerne eine if-abfrage einbauen damit die zuweisungen nur dann gelöscht werden wenn zb dem buchstaben (bereitstellungspunkt)
Y
das device
\\?\Volume{04353517-c058-11db-81de-806d6172696f}
zugeordnet ist.

die abfrage nach dem volume lautet übrigens "mountvol Y:\ /L"

wie mache ich so etwas am besten? :)
 
Zuletzt bearbeitet:
funktioniert nicht, da von der funktion kein errorlevel (kannst du über echo %errorlevel% überprüfen). du müsstest hier also anderweitig rangehen. am einfachsten würd ich nen schalter einbauen und diesen irgendwo in einer datei hinterlegen.

z.b. (ungeprüft, rein vom gedankengang her):
Code:
set switch_file=X:\pfad\zur\datei
set v=0

if exist "%switch_file%" (
set /P v= < "%switch_file%"
)
if %v% eq 0 (
mountvol ...
echo 1 > "%switch_file%"
)
else (
mountvol ...
echo 0 > "%switch_file%"
)
was jetz 1 und was 0 entspricht müsstest du natürlich selbst festlegen, aber so funktioniert es zumindest über den schalter. mit set /p = < liest du von der datei hinter < in eine variable ein und mittels echo > schreibst du etwas in eine datei.

edit: einfacher wäre es vllt noch, einfach auf eine datei zu prüfen. also wenn datei vorhanden, mache zuweisung 1 und lösche datei, wenn nicht mache zuweisung 2 und erstelle datei.
Code:
set file=C:\mountvol_switch
if exist "%file%" (
mountvol ...
del "%file%"
)
else (
mountvol ...
echo . > "%file%"
)
 
Zuletzt bearbeitet:
also gibt diese funktion keine verwertbare antwort zurück?
immerhin steht ja doch die bezeichnung da.
kann man diese nicht kopieren und mit dem eintrag in der batch datei vergleichen?

ja, ich kenne mich damit nicht aus ;), aber es wäre die einzige möglichkeit, nach dateien abfragen würde m.e. nichts bringen.
 
nen anderen weg gibts nicht. das was die datei ausgibt, ist der shell vollkommen egal, denn davon bekommt diese gar nichts mit. lediglich können programme zahlen zurückgeben, welche für verschiedene stati stehen. mountvol gibt aber gar nichts zurück, von daher kannst du damit nichts anfangen und auf nichts prüfen. nen anderen weg als über die hilfsdatei zu gehen bzw. selbst ein programm zu schreiben gibts nicht.
 
mit einer IF Abfrage geht dies nicht alleine, weil IF nur Dateien oder Laufwerke abfragen kann, keine VolumeID.

Das musst du schon mit FOR machen.

Beispiel:

Code:
@Echo off &Setlocal

For /F "Tokens=1,2 Delims={} " %%a  IN ('Mountvol Y:\ /L') DO Set Y=%%b

If /I "%Y%"=="04353517-c058-11db-81de-806d6172696f" (Goto EOF) Else Goto Weiter
 
Zuletzt bearbeitet:
Zurück
Oben