XP : désactiver la surveillance d'un disque externe
8 réponses
JF
Bonjour
Les disques externes ont tendance revenir en mode surveillance
(restauration système). La désactivation via les propriétés du système
n'est pas pratique. RestorWIN rend l'opération un peu plus facile, mais
il n'y a pas de commande.
Est-il possible de désactiver la surveillance
d'un disque amovible par script ?
L'état de la surveillance d'un disque est enregistré dans :
C:\System Volume Information\_restore<MachineGuid>\drivetable.txt
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gilles LAURENT [MVP]
"JF" a écrit dans le message de news:% | Bonjour
Bonjour,
| Les disques externes ont tendance revenir en mode surveillance | (restauration système). La désactivation via les propriétés du système | n'est pas pratique. RestorWIN rend l'opération un peu plus facile, | mais il n'y a pas de commande. | | Est-il possible de désactiver la surveillance | d'un disque amovible par script ?
Avec la méthode Disable de la classe WMI SystemRestore. Par exemple, pour désactiver la surveillance du disque D
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"JF" <JF@-> a écrit dans le message de
news:%23LmVoogIJHA.728@TK2MSFTNGP03.phx.gbl
| Bonjour
Bonjour,
| Les disques externes ont tendance revenir en mode surveillance
| (restauration système). La désactivation via les propriétés du système
| n'est pas pratique. RestorWIN rend l'opération un peu plus facile,
| mais il n'y a pas de commande.
|
| Est-il possible de désactiver la surveillance
| d'un disque amovible par script ?
Avec la méthode Disable de la classe WMI SystemRestore.
Par exemple, pour désactiver la surveillance du disque D
| Les disques externes ont tendance revenir en mode surveillance | (restauration système). La désactivation via les propriétés du système | n'est pas pratique. RestorWIN rend l'opération un peu plus facile, | mais il n'y a pas de commande. | | Est-il possible de désactiver la surveillance | d'un disque amovible par script ?
Avec la méthode Disable de la classe WMI SystemRestore. Par exemple, pour désactiver la surveillance du disque D
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
JF
*Bonjour Gilles LAURENT [MVP] * ! <news:
"JF" a écrit dans le message de news:%
Bonjour
Bonjour,
Les disques externes ont tendance revenir en mode surveillance (restauration système). La désactivation via les propriétés du système n'est pas pratique. RestorWIN rend l'opération un peu plus facile, mais il n'y a pas de commande.
Est-il possible de désactiver la surveillance d'un disque amovible par script ?
Avec la méthode Disable de la classe WMI SystemRestore.
Vu ! http://msdn.microsoft.com/en-us/library/aa378852(VS.85).aspx
Par exemple, pour désactiver la surveillance du disque D
Merci beaucoup ! J'ai modifié ainsi pour que le script désactive le disque amovible sur lequel il est enregistré ==>
Set oSR=GetObject("winmgmts:/root/default:SystemRestore") Set oFSO=CreateObject("Scripting.FileSystemObject") Set oShell=CreateObject("Wscript.Shell") strPath=oShell.CurrentDirectory strDrive=oFSO.GetDriveName(strPath) oSR.Disable(strDrive&"")
"JF" <JF@-> a écrit dans le message de
news:%23LmVoogIJHA.728@TK2MSFTNGP03.phx.gbl
Bonjour
Bonjour,
Les disques externes ont tendance revenir en mode surveillance
(restauration système). La désactivation via les propriétés du système
n'est pas pratique. RestorWIN rend l'opération un peu plus facile,
mais il n'y a pas de commande.
Est-il possible de désactiver la surveillance
d'un disque amovible par script ?
Avec la méthode Disable de la classe WMI SystemRestore.
Vu !
http://msdn.microsoft.com/en-us/library/aa378852(VS.85).aspx
Par exemple, pour désactiver la surveillance du disque D
Merci beaucoup !
J'ai modifié ainsi pour que le script désactive le disque amovible sur
lequel il est enregistré ==>
Set oSR=GetObject("winmgmts:/root/default:SystemRestore")
Set oFSO=CreateObject("Scripting.FileSystemObject")
Set oShell=CreateObject("Wscript.Shell")
strPath=oShell.CurrentDirectory
strDrive=oFSO.GetDriveName(strPath)
oSR.Disable(strDrive&"")
Les disques externes ont tendance revenir en mode surveillance (restauration système). La désactivation via les propriétés du système n'est pas pratique. RestorWIN rend l'opération un peu plus facile, mais il n'y a pas de commande.
Est-il possible de désactiver la surveillance d'un disque amovible par script ?
Avec la méthode Disable de la classe WMI SystemRestore.
Vu ! http://msdn.microsoft.com/en-us/library/aa378852(VS.85).aspx
Par exemple, pour désactiver la surveillance du disque D
Merci beaucoup ! J'ai modifié ainsi pour que le script désactive le disque amovible sur lequel il est enregistré ==>
Set oSR=GetObject("winmgmts:/root/default:SystemRestore") Set oFSO=CreateObject("Scripting.FileSystemObject") Set oShell=CreateObject("Wscript.Shell") strPath=oShell.CurrentDirectory strDrive=oFSO.GetDriveName(strPath) oSR.Disable(strDrive&"")
Une remarque ?
-- Salutations, Jean-François.
Gilles LAURENT [MVP]
"JF" a écrit dans le message de news: | Merci beaucoup ! | J'ai modifié ainsi pour que le script désactive le disque amovible sur | lequel il est enregistré ==> | | Set oSR=GetObject("winmgmts:/root/default:SystemRestore") | Set oFSO=CreateObject("Scripting.FileSystemObject") | Set oShell=CreateObject("Wscript.Shell") | strPath=oShell.CurrentDirectory | strDrive=oFSO.GetDriveName(strPath) | oSR.Disable(strDrive&"") | | Une remarque ?
Super !
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"JF" <JF@-> a écrit dans le message de
news:uq3hjKiIJHA.696@TK2MSFTNGP02.phx.gbl
| Merci beaucoup !
| J'ai modifié ainsi pour que le script désactive le disque amovible sur
| lequel il est enregistré ==>
|
| Set oSR=GetObject("winmgmts:/root/default:SystemRestore")
| Set oFSO=CreateObject("Scripting.FileSystemObject")
| Set oShell=CreateObject("Wscript.Shell")
| strPath=oShell.CurrentDirectory
| strDrive=oFSO.GetDriveName(strPath)
| oSR.Disable(strDrive&"")
|
| Une remarque ?
Super !
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
"JF" a écrit dans le message de news: | Merci beaucoup ! | J'ai modifié ainsi pour que le script désactive le disque amovible sur | lequel il est enregistré ==> | | Set oSR=GetObject("winmgmts:/root/default:SystemRestore") | Set oFSO=CreateObject("Scripting.FileSystemObject") | Set oShell=CreateObject("Wscript.Shell") | strPath=oShell.CurrentDirectory | strDrive=oFSO.GetDriveName(strPath) | oSR.Disable(strDrive&"") | | Une remarque ?
Super !
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
JF
*Bonjour Gilles LAURENT [MVP] * ! <news:#
"JF" a écrit dans le message de news:
Merci beaucoup ! J'ai modifié ainsi pour que le script désactive le disque amovible sur lequel il est enregistré ==>
Set oSR=GetObject("winmgmts:/root/default:SystemRestore") Set oFSO=CreateObject("Scripting.FileSystemObject") Set oShell=CreateObject("Wscript.Shell") strPath=oShell.CurrentDirectory strDrive=oFSO.GetDriveName(strPath) oSR.Disable(strDrive&"")
Une remarque ?
Super !
:) Ça va aller très bien avec ce que j'ai fait en batch pour changer rapidement la lettre d'un volume amovible. Je ne suis pas sûr d'arriver à le réécrire en VBS. Ça t'inspire ?
@echo off color 1F set volume=%~d0 set letter=%volume:~0,1% echo. echo Ce volume a la lettre = %letter% set /p NewLetter=Quelle est la nouvelle lettre a attribuer au lecteur ? echo. echo Vous avez choisi la lettre : %NewLetter% echo. if %NewLetter%=="" exit if /i %NewLetter%==%letter% goto :sameletter if exist %NewLetter%: goto :exist
set tp=%temp%tmp.cmd set tx=%temp%tmp.txt >%tp% echo mountvol %volume% /L^>%tx% >>%tp% echo mountvol %volume% /D >>%tp% echo for /f %%%%A in (%tx%) do set lecteur=%%%%A >>%tp% echo mountvol %NewLetter%: %%lecteur%% >>%tp% echo del %tx% >>%tp% echo del %tp% cd /d %temp% %tp%
if exist %NewLetter%: mountvol %volume% /d @pause goto :eof :sameletter echo Ce lecteur a deja la lettre %letter% @pause goto :eof :exist echo %NewLetter%: n'est pas libre @pause
C'est très inspiré d'exemples que j'ai trouvé dans ce NG :) Ce batch doit fonctionner depuis le lecteur, c'est la raison de ces redirections.
-- Salutations, Jean-François Index de la FAQ XP de Panthère Noire : www.d2i.ch/pn/az Comportement inattendu du PC : http://support.microsoft.com/kb/827315/fr
"JF" <JF@-> a écrit dans le message de
news:uq3hjKiIJHA.696@TK2MSFTNGP02.phx.gbl
Merci beaucoup !
J'ai modifié ainsi pour que le script désactive le disque amovible sur
lequel il est enregistré ==>
Set oSR=GetObject("winmgmts:/root/default:SystemRestore")
Set oFSO=CreateObject("Scripting.FileSystemObject")
Set oShell=CreateObject("Wscript.Shell")
strPath=oShell.CurrentDirectory
strDrive=oFSO.GetDriveName(strPath)
oSR.Disable(strDrive&"")
Une remarque ?
Super !
:)
Ça va aller très bien avec ce que j'ai fait en batch pour changer
rapidement la lettre d'un volume amovible. Je ne suis pas sûr d'arriver
à le réécrire en VBS. Ça t'inspire ?
@echo off
color 1F
set volume=%~d0
set letter=%volume:~0,1%
echo.
echo Ce volume a la lettre = %letter% set /p NewLetter=Quelle est la nouvelle lettre a attribuer au lecteur
?
echo.
echo Vous avez choisi la lettre : %NewLetter%
echo.
if %NewLetter%=="" exit
if /i %NewLetter%==%letter% goto :sameletter
if exist %NewLetter%: goto :exist
set tp=%temp%tmp.cmd
set tx=%temp%tmp.txt
>%tp% echo mountvol %volume% /L^>%tx%
>>%tp% echo mountvol %volume% /D
>>%tp% echo for /f %%%%A in (%tx%) do set lecteur=%%%%A
>>%tp% echo mountvol %NewLetter%: %%lecteur%%
>>%tp% echo del %tx%
>>%tp% echo del %tp%
cd /d %temp%
%tp%
if exist %NewLetter%: mountvol %volume% /d
@pause
goto :eof
:sameletter
echo Ce lecteur a deja la lettre %letter%
@pause
goto :eof
:exist
echo %NewLetter%: n'est pas libre
@pause
C'est très inspiré d'exemples que j'ai trouvé dans ce NG :)
Ce batch doit fonctionner depuis le lecteur, c'est la raison de ces
redirections.
--
Salutations, Jean-François
Index de la FAQ XP de Panthère Noire : www.d2i.ch/pn/az
Comportement inattendu du PC :
http://support.microsoft.com/kb/827315/fr
Merci beaucoup ! J'ai modifié ainsi pour que le script désactive le disque amovible sur lequel il est enregistré ==>
Set oSR=GetObject("winmgmts:/root/default:SystemRestore") Set oFSO=CreateObject("Scripting.FileSystemObject") Set oShell=CreateObject("Wscript.Shell") strPath=oShell.CurrentDirectory strDrive=oFSO.GetDriveName(strPath) oSR.Disable(strDrive&"")
Une remarque ?
Super !
:) Ça va aller très bien avec ce que j'ai fait en batch pour changer rapidement la lettre d'un volume amovible. Je ne suis pas sûr d'arriver à le réécrire en VBS. Ça t'inspire ?
@echo off color 1F set volume=%~d0 set letter=%volume:~0,1% echo. echo Ce volume a la lettre = %letter% set /p NewLetter=Quelle est la nouvelle lettre a attribuer au lecteur ? echo. echo Vous avez choisi la lettre : %NewLetter% echo. if %NewLetter%=="" exit if /i %NewLetter%==%letter% goto :sameletter if exist %NewLetter%: goto :exist
set tp=%temp%tmp.cmd set tx=%temp%tmp.txt >%tp% echo mountvol %volume% /L^>%tx% >>%tp% echo mountvol %volume% /D >>%tp% echo for /f %%%%A in (%tx%) do set lecteur=%%%%A >>%tp% echo mountvol %NewLetter%: %%lecteur%% >>%tp% echo del %tx% >>%tp% echo del %tp% cd /d %temp% %tp%
if exist %NewLetter%: mountvol %volume% /d @pause goto :eof :sameletter echo Ce lecteur a deja la lettre %letter% @pause goto :eof :exist echo %NewLetter%: n'est pas libre @pause
C'est très inspiré d'exemples que j'ai trouvé dans ce NG :) Ce batch doit fonctionner depuis le lecteur, c'est la raison de ces redirections.
-- Salutations, Jean-François Index de la FAQ XP de Panthère Noire : www.d2i.ch/pn/az Comportement inattendu du PC : http://support.microsoft.com/kb/827315/fr
Gilles LAURENT [MVP]
"JF" a écrit dans le message de news:e$ | Ça va aller très bien avec ce que j'ai fait en batch pour changer | rapidement la lettre d'un volume amovible. Je ne suis pas sûr | d'arriver à le réécrire en VBS. Ça t'inspire ? [...]
Ci-dessous le portage de votre script batch en VBScript. Les vérifications essentielles sont implémentées. L'utilisateur est prompté tant que les vérifications échouent. Le script s'interrompt lorsque l'utilisateur clique sur le bouton "Annuler" ou alors s'il entre la même lettre de lecteur que celle actuellement utilisée par le périphérique amovible.
Note: J'utilise également l'outil mountvol pour la manipulation des volumes. Il est toutefois à noter que depuis Windows 2003 / Vista, les méthodes de la classe WMI Win32_Volume permettent d'effectuer ces opérations.
Win32_Volume Class : http://msdn.microsoft.com/en-us/library/aa394515(VS.85).aspx
--- Coupez ici : ChangeDriveLetter.vbs --- Set oSh=CreateObject("WScript.Shell") Set oFs=CreateObject("Scripting.FileSystemObject") If WScript.Arguments.Count=0 Then Set oRe=New RegExp: oRe.Pattern="^([aA-zZ]:)$" sTempFolder=oFs.GetSpecialFolder(2) & "" sCurrentDrive=oFs.GetDriveName(oSh.CurrentDirectory) Set oExec=oSh.Exec("mountvol " & sCurrentDrive & " /l") sCurrentVolume=Replace(oExec.StdOut.ReadLine()," ", "") Do While True sNewDrive=InputBox( _ "The volume is currently mounted on drive " & sCurrentDrive & _ VBCrLf & VBCrLf & _ "Please enter a new drive letter :", "Change drive letter") If sNewDrive = "" Or sNewDrive=sCurrentDrive Then WScript.Quit() If oRe.Test(sNewDrive) And Not oFs.DriveExists(sNewDrive) Then oFs.CopyFile WScript.ScriptFullName, sTempFolder, True oSh.Run sTempFolder & WScript.ScriptName & " " & _ sCurrentDrive & " " & _ sCurrentVolume & " " & _ sNewDrive, 0, False WScript.Quit() End If Loop Else oFs.DeleteFile WScript.ScriptFullName, True sCurrentDrive=WScript.Arguments(0) sCurrentVolume=WScript.Arguments(1) sNewDrive=WScript.Arguments(2) WScript.Sleep(1000) oSh.Run "mountvol " & sCurrentDrive & " /d", 0, True oSh.Run "mountvol " & sNewDrive & " " & sCurrentVolume, 0, True End If --- Coupez ici : ChangeDriveLetter.vbs ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"JF" <JF@-> a écrit dans le message de
news:e$y9rdjIJHA.1060@TK2MSFTNGP03.phx.gbl
| Ça va aller très bien avec ce que j'ai fait en batch pour changer
| rapidement la lettre d'un volume amovible. Je ne suis pas sûr
| d'arriver à le réécrire en VBS. Ça t'inspire ?
[...]
Ci-dessous le portage de votre script batch en VBScript. Les
vérifications essentielles sont implémentées. L'utilisateur est prompté
tant que les vérifications échouent. Le script s'interrompt lorsque
l'utilisateur clique sur le bouton "Annuler" ou alors s'il entre la même
lettre de lecteur que celle actuellement utilisée par le périphérique
amovible.
Note: J'utilise également l'outil mountvol pour la manipulation des
volumes. Il est toutefois à noter que depuis Windows 2003 / Vista, les
méthodes de la classe WMI Win32_Volume permettent d'effectuer ces
opérations.
Win32_Volume Class :
http://msdn.microsoft.com/en-us/library/aa394515(VS.85).aspx
--- Coupez ici : ChangeDriveLetter.vbs ---
Set oSh=CreateObject("WScript.Shell")
Set oFs=CreateObject("Scripting.FileSystemObject")
If WScript.Arguments.Count=0 Then
Set oRe=New RegExp: oRe.Pattern="^([aA-zZ]:)$"
sTempFolder=oFs.GetSpecialFolder(2) & ""
sCurrentDrive=oFs.GetDriveName(oSh.CurrentDirectory)
Set oExec=oSh.Exec("mountvol " & sCurrentDrive & " /l")
sCurrentVolume=Replace(oExec.StdOut.ReadLine()," ", "")
Do While True
sNewDrive=InputBox( _
"The volume is currently mounted on drive " & sCurrentDrive & _
VBCrLf & VBCrLf & _
"Please enter a new drive letter :", "Change drive letter")
If sNewDrive = "" Or sNewDrive=sCurrentDrive Then WScript.Quit()
If oRe.Test(sNewDrive) And Not oFs.DriveExists(sNewDrive) Then
oFs.CopyFile WScript.ScriptFullName, sTempFolder, True
oSh.Run sTempFolder & WScript.ScriptName & " " & _
sCurrentDrive & " " & _
sCurrentVolume & " " & _
sNewDrive, 0, False
WScript.Quit()
End If
Loop
Else
oFs.DeleteFile WScript.ScriptFullName, True
sCurrentDrive=WScript.Arguments(0)
sCurrentVolume=WScript.Arguments(1)
sNewDrive=WScript.Arguments(2)
WScript.Sleep(1000)
oSh.Run "mountvol " & sCurrentDrive & " /d", 0, True
oSh.Run "mountvol " & sNewDrive & " " & sCurrentVolume, 0, True
End If
--- Coupez ici : ChangeDriveLetter.vbs ---
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
"JF" a écrit dans le message de news:e$ | Ça va aller très bien avec ce que j'ai fait en batch pour changer | rapidement la lettre d'un volume amovible. Je ne suis pas sûr | d'arriver à le réécrire en VBS. Ça t'inspire ? [...]
Ci-dessous le portage de votre script batch en VBScript. Les vérifications essentielles sont implémentées. L'utilisateur est prompté tant que les vérifications échouent. Le script s'interrompt lorsque l'utilisateur clique sur le bouton "Annuler" ou alors s'il entre la même lettre de lecteur que celle actuellement utilisée par le périphérique amovible.
Note: J'utilise également l'outil mountvol pour la manipulation des volumes. Il est toutefois à noter que depuis Windows 2003 / Vista, les méthodes de la classe WMI Win32_Volume permettent d'effectuer ces opérations.
Win32_Volume Class : http://msdn.microsoft.com/en-us/library/aa394515(VS.85).aspx
--- Coupez ici : ChangeDriveLetter.vbs --- Set oSh=CreateObject("WScript.Shell") Set oFs=CreateObject("Scripting.FileSystemObject") If WScript.Arguments.Count=0 Then Set oRe=New RegExp: oRe.Pattern="^([aA-zZ]:)$" sTempFolder=oFs.GetSpecialFolder(2) & "" sCurrentDrive=oFs.GetDriveName(oSh.CurrentDirectory) Set oExec=oSh.Exec("mountvol " & sCurrentDrive & " /l") sCurrentVolume=Replace(oExec.StdOut.ReadLine()," ", "") Do While True sNewDrive=InputBox( _ "The volume is currently mounted on drive " & sCurrentDrive & _ VBCrLf & VBCrLf & _ "Please enter a new drive letter :", "Change drive letter") If sNewDrive = "" Or sNewDrive=sCurrentDrive Then WScript.Quit() If oRe.Test(sNewDrive) And Not oFs.DriveExists(sNewDrive) Then oFs.CopyFile WScript.ScriptFullName, sTempFolder, True oSh.Run sTempFolder & WScript.ScriptName & " " & _ sCurrentDrive & " " & _ sCurrentVolume & " " & _ sNewDrive, 0, False WScript.Quit() End If Loop Else oFs.DeleteFile WScript.ScriptFullName, True sCurrentDrive=WScript.Arguments(0) sCurrentVolume=WScript.Arguments(1) sNewDrive=WScript.Arguments(2) WScript.Sleep(1000) oSh.Run "mountvol " & sCurrentDrive & " /d", 0, True oSh.Run "mountvol " & sNewDrive & " " & sCurrentVolume, 0, True End If --- Coupez ici : ChangeDriveLetter.vbs ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
JF
*Bonjour Gilles LAURENT [MVP] * ! <news:
"JF" a écrit dans le message de news:e$
Ça va aller très bien avec ce que j'ai fait en batch pour changer rapidement la lettre d'un volume amovible. Je ne suis pas sûr d'arriver à le réécrire en VBS. Ça t'inspire ?
[...]
Ci-dessous le portage de votre script batch en VBScript. Les vérifications essentielles sont implémentées. L'utilisateur est prompté tant que les vérifications échouent. Le script s'interrompt lorsque l'utilisateur clique sur le bouton "Annuler" ou alors s'il entre la même lettre de lecteur que celle actuellement utilisée par le périphérique amovible.
Merci !
Note: J'utilise également l'outil mountvol pour la manipulation des volumes. Il est toutefois à noter que depuis Windows 2003 / Vista, les méthodes de la classe WMI Win32_Volume permettent d'effectuer ces opérations. Win32_Volume Class : http://msdn.microsoft.com/en-us/library/aa394515(VS.85).aspx
C'est noté, merci de l'info.
--- Coupez ici : ChangeDriveLetter.vbs --- Set oSh=CreateObject("WScript.Shell") Set oFs=CreateObject("Scripting.FileSystemObject") If WScript.Arguments.Count=0 Then Set oRe=New RegExp: oRe.Pattern="^([aA-zZ]:)$"
Attention avec les courrielleurs, il faut afficher le texte brut pour lire correctement la fin de la ligne ==> ] : ) $ "
sTempFolder=oFs.GetSpecialFolder(2) & "" sCurrentDrive=oFs.GetDriveName(oSh.CurrentDirectory) Set oExec=oSh.Exec("mountvol " & sCurrentDrive & " /l") sCurrentVolume=Replace(oExec.StdOut.ReadLine()," ", "") Do While True sNewDrive=InputBox( _ "The volume is currently mounted on drive " & sCurrentDrive & _ VBCrLf & VBCrLf & _ "Please enter a new drive letter :", "Change drive letter")
If sNewDrive = "" Or sNewDrive=sCurrentDrive Then WScript.Quit()
Ça ne marchait pas, j'ai donc modifié ainsi :
If sNewDrive="" Then WScript.Quit() sNewDrive=UCase(sNewDrive) sNewDrive=sNewDrive&":" If sNewDrive=sCurrentDrive Then WScript.Quit()
"JF" <JF@-> a écrit dans le message de
news:e$y9rdjIJHA.1060@TK2MSFTNGP03.phx.gbl
Ça va aller très bien avec ce que j'ai fait en batch pour changer
rapidement la lettre d'un volume amovible. Je ne suis pas sûr
d'arriver à le réécrire en VBS. Ça t'inspire ?
[...]
Ci-dessous le portage de votre script batch en VBScript. Les
vérifications essentielles sont implémentées. L'utilisateur est prompté
tant que les vérifications échouent. Le script s'interrompt lorsque
l'utilisateur clique sur le bouton "Annuler" ou alors s'il entre la même
lettre de lecteur que celle actuellement utilisée par le périphérique
amovible.
Merci !
Note: J'utilise également l'outil mountvol pour la manipulation des
volumes. Il est toutefois à noter que depuis Windows 2003 / Vista, les
méthodes de la classe WMI Win32_Volume permettent d'effectuer ces
opérations.
Win32_Volume Class :
http://msdn.microsoft.com/en-us/library/aa394515(VS.85).aspx
C'est noté, merci de l'info.
--- Coupez ici : ChangeDriveLetter.vbs ---
Set oSh=CreateObject("WScript.Shell")
Set oFs=CreateObject("Scripting.FileSystemObject")
If WScript.Arguments.Count=0 Then
Set oRe=New RegExp: oRe.Pattern="^([aA-zZ]:)$"
Attention avec les courrielleurs, il faut afficher le texte brut pour
lire correctement la fin de la ligne ==> ] : ) $ "
sTempFolder=oFs.GetSpecialFolder(2) & ""
sCurrentDrive=oFs.GetDriveName(oSh.CurrentDirectory)
Set oExec=oSh.Exec("mountvol " & sCurrentDrive & " /l")
sCurrentVolume=Replace(oExec.StdOut.ReadLine()," ", "")
Do While True
sNewDrive=InputBox( _
"The volume is currently mounted on drive " & sCurrentDrive & _
VBCrLf & VBCrLf & _
"Please enter a new drive letter :", "Change drive letter")
If sNewDrive = "" Or sNewDrive=sCurrentDrive Then WScript.Quit()
Ça ne marchait pas, j'ai donc modifié ainsi :
If sNewDrive="" Then WScript.Quit()
sNewDrive=UCase(sNewDrive)
sNewDrive=sNewDrive&":"
If sNewDrive=sCurrentDrive Then WScript.Quit()
Ça va aller très bien avec ce que j'ai fait en batch pour changer rapidement la lettre d'un volume amovible. Je ne suis pas sûr d'arriver à le réécrire en VBS. Ça t'inspire ?
[...]
Ci-dessous le portage de votre script batch en VBScript. Les vérifications essentielles sont implémentées. L'utilisateur est prompté tant que les vérifications échouent. Le script s'interrompt lorsque l'utilisateur clique sur le bouton "Annuler" ou alors s'il entre la même lettre de lecteur que celle actuellement utilisée par le périphérique amovible.
Merci !
Note: J'utilise également l'outil mountvol pour la manipulation des volumes. Il est toutefois à noter que depuis Windows 2003 / Vista, les méthodes de la classe WMI Win32_Volume permettent d'effectuer ces opérations. Win32_Volume Class : http://msdn.microsoft.com/en-us/library/aa394515(VS.85).aspx
C'est noté, merci de l'info.
--- Coupez ici : ChangeDriveLetter.vbs --- Set oSh=CreateObject("WScript.Shell") Set oFs=CreateObject("Scripting.FileSystemObject") If WScript.Arguments.Count=0 Then Set oRe=New RegExp: oRe.Pattern="^([aA-zZ]:)$"
Attention avec les courrielleurs, il faut afficher le texte brut pour lire correctement la fin de la ligne ==> ] : ) $ "
sTempFolder=oFs.GetSpecialFolder(2) & "" sCurrentDrive=oFs.GetDriveName(oSh.CurrentDirectory) Set oExec=oSh.Exec("mountvol " & sCurrentDrive & " /l") sCurrentVolume=Replace(oExec.StdOut.ReadLine()," ", "") Do While True sNewDrive=InputBox( _ "The volume is currently mounted on drive " & sCurrentDrive & _ VBCrLf & VBCrLf & _ "Please enter a new drive letter :", "Change drive letter")
If sNewDrive = "" Or sNewDrive=sCurrentDrive Then WScript.Quit()
Ça ne marchait pas, j'ai donc modifié ainsi :
If sNewDrive="" Then WScript.Quit() sNewDrive=UCase(sNewDrive) sNewDrive=sNewDrive&":" If sNewDrive=sCurrentDrive Then WScript.Quit()
-- Salutations, Jean-François.
Gilles LAURENT [MVP]
"JF" a écrit dans le message de news:
[...] | Ça ne marchait pas, j'ai donc modifié ainsi : | | If sNewDrive="" Then WScript.Quit() | sNewDrive=UCase(sNewDrive) | sNewDrive=sNewDrive&":" | If sNewDrive=sCurrentDrive Then WScript.Quit()
Si la lettre de lecteur est entrée dans l'InputBox en respectant la convention de nommage "X:" alors cela ne marche pas non plus car du coup on se retrouve ici avec sNewDrive="X::" ;-). En fait je pense que la condition ci-dessous est suffisante : If sNewDrive="" Then WScript.Quit()
Car juste après nous avons : If oRe.Test(sNewDrive) And Not oFs.DriveExists(sNewDrive) Then
- La casse n'a aucune importance - La lettre de lecteur doit respecter la convention de nommage "X:" - La lettre de lecteur ne doit pas être déjà montée
Merci pour ce retour.
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"JF" <JF@-> a écrit dans le message de
news:eEqP253IJHA.4512@TK2MSFTNGP02.phx.gbl
[...]
| Ça ne marchait pas, j'ai donc modifié ainsi :
|
| If sNewDrive="" Then WScript.Quit()
| sNewDrive=UCase(sNewDrive)
| sNewDrive=sNewDrive&":"
| If sNewDrive=sCurrentDrive Then WScript.Quit()
Si la lettre de lecteur est entrée dans l'InputBox en respectant la
convention de nommage "X:" alors cela ne marche pas non plus car du coup
on se retrouve ici avec sNewDrive="X::" ;-). En fait je pense que la
condition ci-dessous est suffisante :
If sNewDrive="" Then WScript.Quit()
Car juste après nous avons :
If oRe.Test(sNewDrive) And Not oFs.DriveExists(sNewDrive) Then
- La casse n'a aucune importance
- La lettre de lecteur doit respecter la convention de nommage "X:"
- La lettre de lecteur ne doit pas être déjà montée
Merci pour ce retour.
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
[...] | Ça ne marchait pas, j'ai donc modifié ainsi : | | If sNewDrive="" Then WScript.Quit() | sNewDrive=UCase(sNewDrive) | sNewDrive=sNewDrive&":" | If sNewDrive=sCurrentDrive Then WScript.Quit()
Si la lettre de lecteur est entrée dans l'InputBox en respectant la convention de nommage "X:" alors cela ne marche pas non plus car du coup on se retrouve ici avec sNewDrive="X::" ;-). En fait je pense que la condition ci-dessous est suffisante : If sNewDrive="" Then WScript.Quit()
Car juste après nous avons : If oRe.Test(sNewDrive) And Not oFs.DriveExists(sNewDrive) Then
- La casse n'a aucune importance - La lettre de lecteur doit respecter la convention de nommage "X:" - La lettre de lecteur ne doit pas être déjà montée
Merci pour ce retour.
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
JF
! <news:
"JF" a écrit dans le message de news:
[...]
Ça ne marchait pas, j'ai donc modifié ainsi :
If sNewDrive="" Then WScript.Quit() sNewDrive=UCase(sNewDrive) sNewDrive=sNewDrive&":" If sNewDrive=sCurrentDrive Then WScript.Quit()
Si la lettre de lecteur est entrée dans l'InputBox en respectant la convention de nommage "X:" alors cela ne marche pas non plus car du coup on se retrouve ici avec sNewDrive="X::" ;-). En fait je pense que la condition ci-dessous est suffisante : If sNewDrive="" Then WScript.Quit()
Car juste après nous avons : If oRe.Test(sNewDrive) And Not oFs.DriveExists(sNewDrive) Then
- La casse n'a aucune importance
C'était seulement pour passer le test bien sûr.
- La lettre de lecteur doit respecter la convention de nommage "X:"
En entrée le script demande une lettre; c'est donc, à mon sens, au script de corriger selon que l'utilisateur a eu l'idée ou non d'ajouter les deux-points. Je vais ajouter un test.
- La lettre de lecteur ne doit pas être déjà montée
Dans l'absolu il est inutile de vérifier si la lettre est déjà utilisée. Dans le Batch je teste pour informer l'utilisateur s'il se trompe.
Merci pour ce retour.
M E R C I Gilles.
-- Salutations, Jean-François FAQ XP de Panthère Noire (index) : www.d2i.ch/pn/az Un problème à montrer ? http://fspsa.free.fr/copiecran.htm Outil : http://fspsa.free.fr/Presse-Papier_vers_Regedit.htm
!
<news:eItxix5IJHA.3424@TK2MSFTNGP05.phx.gbl>
"JF" <JF@-> a écrit dans le message de
news:eEqP253IJHA.4512@TK2MSFTNGP02.phx.gbl
[...]
Ça ne marchait pas, j'ai donc modifié ainsi :
If sNewDrive="" Then WScript.Quit()
sNewDrive=UCase(sNewDrive)
sNewDrive=sNewDrive&":"
If sNewDrive=sCurrentDrive Then WScript.Quit()
Si la lettre de lecteur est entrée dans l'InputBox en respectant la
convention de nommage "X:" alors cela ne marche pas non plus car du coup
on se retrouve ici avec sNewDrive="X::" ;-). En fait je pense que la
condition ci-dessous est suffisante :
If sNewDrive="" Then WScript.Quit()
Car juste après nous avons :
If oRe.Test(sNewDrive) And Not oFs.DriveExists(sNewDrive) Then
- La casse n'a aucune importance
C'était seulement pour passer le test bien sûr.
- La lettre de lecteur doit respecter la convention de nommage "X:"
En entrée le script demande une lettre; c'est donc, à mon sens, au
script de corriger selon que l'utilisateur a eu l'idée ou non d'ajouter
les deux-points. Je vais ajouter un test.
- La lettre de lecteur ne doit pas être déjà montée
Dans l'absolu il est inutile de vérifier si la lettre est déjà
utilisée. Dans le Batch je teste pour informer l'utilisateur s'il se
trompe.
Merci pour ce retour.
M E R C I Gilles.
--
Salutations, Jean-François
FAQ XP de Panthère Noire (index) : www.d2i.ch/pn/az
Un problème à montrer ? http://fspsa.free.fr/copiecran.htm
Outil : http://fspsa.free.fr/Presse-Papier_vers_Regedit.htm
If sNewDrive="" Then WScript.Quit() sNewDrive=UCase(sNewDrive) sNewDrive=sNewDrive&":" If sNewDrive=sCurrentDrive Then WScript.Quit()
Si la lettre de lecteur est entrée dans l'InputBox en respectant la convention de nommage "X:" alors cela ne marche pas non plus car du coup on se retrouve ici avec sNewDrive="X::" ;-). En fait je pense que la condition ci-dessous est suffisante : If sNewDrive="" Then WScript.Quit()
Car juste après nous avons : If oRe.Test(sNewDrive) And Not oFs.DriveExists(sNewDrive) Then
- La casse n'a aucune importance
C'était seulement pour passer le test bien sûr.
- La lettre de lecteur doit respecter la convention de nommage "X:"
En entrée le script demande une lettre; c'est donc, à mon sens, au script de corriger selon que l'utilisateur a eu l'idée ou non d'ajouter les deux-points. Je vais ajouter un test.
- La lettre de lecteur ne doit pas être déjà montée
Dans l'absolu il est inutile de vérifier si la lettre est déjà utilisée. Dans le Batch je teste pour informer l'utilisateur s'il se trompe.
Merci pour ce retour.
M E R C I Gilles.
-- Salutations, Jean-François FAQ XP de Panthère Noire (index) : www.d2i.ch/pn/az Un problème à montrer ? http://fspsa.free.fr/copiecran.htm Outil : http://fspsa.free.fr/Presse-Papier_vers_Regedit.htm