Betrifft: fsutil-Problem unter Win 10
Liebe Batch-Gemeinde,
ich sitze hier vor einem Problem, das erst ab Windows 10 (alle Versionen) auftritt.
In einigen vorliegenden Batchdateien ist es zwingend, dass vor dem Lauf von Kopierjobs (robocopy)
abgefragt wird, ob Quell- und/oder Ziel-Volumes ein bestimmtes Label tragen.
Bei Volumes mit Buchstaben kann das mit 'vol' oder 'dir' oder anderen Hilfsmitteln erledigt werden.
Wenn es sich aber um (NTFS)-Mountpoints handelt, funktioniert das nicht - die genannten Befehle geben
immer das Label des Stammlaufwerkes zurück.
Abhilfe war hierzu (ab Win 2000 bis einschließlich Win 8.1) der Befehl
wobei "%MountPath%\" i.e. so aussieht:
'X:\VZ\UVZ\MVZ\', dabei ist in 'MVZ' ein Volume mit dem eindeutigen Label gemounted.
Zeile in Batch zum besseren Verständnis:
Unter Win10 ergibt nun der Befehl zweierlei:
1. mit abschließendem '\': "Das System kann den angegebenen Pfad nicht finden."
2. dto ohne '\': "Zugriff verweigert"
Anmerkung: Variante 2 wurde nur der Vollständigkeit halber getestet.
Das angedachte Ausweichen auf 'wmic' gilt als gescheitert, da hier keine Konstellation gefunden wurde,
die Label aus (in Unterverzeichnissen) gemounteten Volumes abfragen kann.
Ebenfalls scheidet die Idee der temporären Vergabe eines Buchstabens an das entspr. Volume aus, da
zu viele parallel laufende Überwachungsscripte getriggert würden.
Hat jemand eine Idee, wie diesem Problem beizukommen wäre?
Danke für Eure Mühe und freundliche Grüße von der Insel - Mario
ich sitze hier vor einem Problem, das erst ab Windows 10 (alle Versionen) auftritt.
In einigen vorliegenden Batchdateien ist es zwingend, dass vor dem Lauf von Kopierjobs (robocopy)
abgefragt wird, ob Quell- und/oder Ziel-Volumes ein bestimmtes Label tragen.
Bei Volumes mit Buchstaben kann das mit 'vol' oder 'dir' oder anderen Hilfsmitteln erledigt werden.
Wenn es sich aber um (NTFS)-Mountpoints handelt, funktioniert das nicht - die genannten Befehle geben
immer das Label des Stammlaufwerkes zurück.
Abhilfe war hierzu (ab Win 2000 bis einschließlich Win 8.1) der Befehl
fsutil fsinfo volumeinfo %MountPath%\
'X:\VZ\UVZ\MVZ\', dabei ist in 'MVZ' ein Volume mit dem eindeutigen Label gemounted.
Zeile in Batch zum besseren Verständnis:
'for /f "delims=\" %%i in ('fsutil fsinfo volumeinfo %MountPath%\ ^| find "%LabelName%"') do (
Unter Win10 ergibt nun der Befehl
fsutil fsinfo volumeinfo %MountPath%
1. mit abschließendem '\': "Das System kann den angegebenen Pfad nicht finden."
2. dto ohne '\': "Zugriff verweigert"
Anmerkung: Variante 2 wurde nur der Vollständigkeit halber getestet.
Das angedachte Ausweichen auf 'wmic' gilt als gescheitert, da hier keine Konstellation gefunden wurde,
die Label aus (in Unterverzeichnissen) gemounteten Volumes abfragen kann.
Ebenfalls scheidet die Idee der temporären Vergabe eines Buchstabens an das entspr. Volume aus, da
zu viele parallel laufende Überwachungsscripte getriggert würden.
Hat jemand eine Idee, wie diesem Problem beizukommen wäre?
Danke für Eure Mühe und freundliche Grüße von der Insel - Mario
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3011141328
Url: https://administrator.de/contentid/3011141328
Ausgedruckt am: 21.11.2024 um 21:11 Uhr
4 Kommentare
Neuester Kommentar
Servus.
Wenn du bei fsutil bleiben willst nimmst du stattdessen den Volume-Identifier,
ansonsten einfach wmic volume (s. Thomas) oder etwas abgewandelte Form
... oder auch mit etwas PS Hilfe
Grüße Uwe
Wenn du bei fsutil bleiben willst nimmst du stattdessen den Volume-Identifier,
@echo off
set "mountpath=C:\my\path"
for /f "tokens=* delims= " %%a in ('mountvol "%mountpath%" /l') do for /f "tokens=1,* delims=: " %%b in ('fsutil fsinfo volumeinfo %%a ^| findstr /i "Volumename"') do set "volumelabel=%%c"
echo %volumelabel%
@echo off
:: bitte Backslash am Ende des Pfades
set "mountpath=C:\my\path\"
for /f "tokens=1* delims==" %%a in ('wmic volume where "Caption='%mountpath:\=\\%'" get label /value ^|findstr "="') do set "volumelabel=%%b"
echo %volumelabel%
@echo on
:: bitte Backslash am Ende des Pfades
set "mountpath=C:\my\path\"
for /f "delims=" %%a in ('powershell -EP Bypass -C "(gcim win32_Volume -Filter \"Caption ^= '%mountpath:\=\\%'\").Label"') do set "volumelabel=%%a"
echo %volumelabel%
Moin,
Bei mir funktioniert das tadellos - poste mal bitte deinen aktuellen Code.
Beachte auch, dass der Pfad immer vollständig übereinstimmen muss - hast du vielleicht den abschließenden Backslash am Ende des Pfades weggelassen?
Du kannst auch folgenden Befehl mal in der Konsole direkt ausführen und abgleichen:
Gruß Thomas
Zitat von @mak-xxl:
Vielen Dank für die Lösung, die (leider) einen Fehler 'Keine Instanz verfügbar' ausgibt, ohne jedoch das Label auszugeben.
Der Fehler sagt, dass kein Volume mit dem MountPoint gefunden wurde.Vielen Dank für die Lösung, die (leider) einen Fehler 'Keine Instanz verfügbar' ausgibt, ohne jedoch das Label auszugeben.
Bei mir funktioniert das tadellos - poste mal bitte deinen aktuellen Code.
Beachte auch, dass der Pfad immer vollständig übereinstimmen muss - hast du vielleicht den abschließenden Backslash am Ende des Pfades weggelassen?
Du kannst auch folgenden Befehl mal in der Konsole direkt ausführen und abgleichen:
wmic volume get Caption,Label
Gruß Thomas