hallo,
kann man mit AutoIT Laufwerksbuchstaben ändern?
mfg. Jonathan
hallo,
kann man mit AutoIT Laufwerksbuchstaben ändern?
mfg. Jonathan
Hi,
[autoit]DriveSetLabel
[/autoit]ist ggf nicht das was du suchst?
Den Laufweksbuchstaben zu ändern, sagen wir mal C:\ in K:\ würde ggf einigen Programmen den Boden unter den Füssen wegziehen. Wozu brauchst du einen geänderten Laufwerksbuchstaben?
Vielleicht hilft dir der DOS-Befehl "SUBST" weiter, um einem Pfad einen Laufwerksbuchstaben zuzuweisen.
Andy
Sollte so gehen:
[autoit]$oldLetter = 'D:'
$newLetter = 'Q:'
$strComputer = "."
$objWMIService = ObjGet("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$colVolumes = $objWMIService.ExecQuery _
("Select * from Win32_Volume Where Name = '" & $oldLetter & "\\'")
For $objVolume In $colVolumes
$objVolume.DriveLetter = $newLetter
$objVolume.Put_
Next
Oder über die Registry:
$wert = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\Z:")
RegDelete("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\Z:")
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\D:", "REG_BINARY", $wert)
Hallo.
Gibt es nicht viele Fehler wenn man einfach System Patition C: in X: ändert?
mfg
Hallo.
Gibt es nicht viele Fehler wenn man einfach System Patition C: in X: ändert?
mfg
Wenn du es über die Registry machst, könntest du es vermutlich sogar schaffen, das Systemlaufwerk umzubenennen (nie getestet). Danach wäre aber dein System breit
Bei allen anderen Varianten ist es unmöglich die Systempartition umzubenennen, bricht mit Fehler ab.
Oder über die Registry:
Spoiler anzeigen
[autoit]$wert = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\Z:")
[/autoit]
RegDelete("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\Z:")
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\D:", "REG_BINARY", $wert)
was wird da gemacht genau? möchte ein usb laufwerk f: auf e: ändern...
Beim ersten Schritt holst du dir den Wert vom USB-Laufwerk. ( F: )
Beim zweiten löschst du das USB-Laufwerk. ( F: )
Beim dritten fügst du es mit dem zuvor geholten Wert hinzu. ( E: )
So müsste es für dich dann passen:
$wert = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\F:")
RegDelete("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\F:")
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\E:", "REG_BINARY", $wert)
Beim ersten Schritt holst du dir den Wert vom USB-Laufwerk. ( F: )
Beim zweiten löschst du das USB-Laufwerk. ( F: )
Beim dritten fügst du es mit dem zuvor geholten Wert hinzu. ( E: )
So müsste es für dich dann passen:
Spoiler anzeigen
[autoit]$wert = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\F:")
[/autoit]
RegDelete("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\F:")
RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\E:", "REG_BINARY", $wert)
brauche ich danach einen neustart?
Es gibt auch einen anderen Weg zur Laufwerksumbenennung: Diskpart
Hier ein Bsp. um einem USB-Stick einen anderen Lw-Buchstaben zuzuweisen. Ist sofort wirksam.
Es gibt eine Fehlermeldung (Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.) beim Aushängen und beim Neueinhängen, die aber ignoriert werden kann.
#include <Constants.au3>
Local $Lw_old = 'G', $Lw_new = 'F'
Local $foo = Run("cmd", @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
Local $sCMD = 'diskpart' & @CRLF & _
"select Volume " & $Lw_old & @CRLF & _
"remove" & @CRLF & _
"assign letter=" & $Lw_new & @CRLF & _
"exit" & @CRLF
StdinWrite($foo, $sCMD)
StdinWrite($foo)
ConsoleWrite('Fertig' & @CRLF)
Edit: Ging noch kürzer
Alles anzeigenEs gibt auch einen anderen Weg zur Laufwerksumbenennung: Diskpart
Hier ein Bsp. um einem USB-Stick einen anderen Lw-Buchstaben zuzuweisen. Ist sofort wirksam.
Es gibt eine Fehlermeldung (Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.) beim Aushängen und beim Neueinhängen, die aber ignoriert werden kann.Spoiler anzeigen
[autoit]#include <Constants.au3>
[/autoit]
Local $Lw_old = 'G', $Lw_new = 'F'
Local $foo = Run("cmd", @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
Local $sCMD = 'diskpart' & @CRLF & _
"select Volume " & $Lw_old & @CRLF & _
"remove" & @CRLF & _
"assign letter=" & $Lw_new & @CRLF & _
"exit" & @CRLF
StdinWrite($foo, $sCMD)
StdinWrite($foo)
ConsoleWrite('Fertig' & @CRLF)
das funktioniert bei mir nicht, es wird gefragt ob diskpart ausgeführt
werden soll dann muss ich auf "ja" klicken, und dann kommt die
eingabeaufforderung mit diskpart und dann passiert nichts weiter...?
Was hast du für ein Betriebssystem? Bei XP klappt es problemlos.
Bei Vista und 7 weiß ich nicht.
Durch das Erscheinen der Sicherheitsabfrage geht natürlich der Rest der Befehle verloren und somit passiert nix. Mußt also dein OS dazu bewegen dich nicht zu fragen, wenn du auf der Console Befehle verarbeiten willst.
windoof 7 hab ich^^ mhh wie mach ich das denn...mhh
Hi,
um die Sicherheitsabfrage wirst Du wohl nicht herum kommen.
Versuche es einmal mit #RequireAdmin am Anfang des Skriptes.
Oder Du siehst dir USBLDM von Uwe Siebert einmal an ...
USBLDM
Gruß
Greenhorn