 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
eagle213
Anmeldedatum: 12.05.2006 Beiträge: 3
|
Verfasst am: Fr Mai 12, 2006 10:44 am Titel: Schreibschutzabfrage USB-Stick |
|
|
Hallo Ihr,
ich moechte in einem Script abfragen, ob der Datentraeger (von dem das Script startet) schreibgeschuetzt ist.
Dazu benenne ich eine Datei probehalber um (mit FileMove) und lese danach den ErrorLevel aus.
Allerdings scheitere ich dann an der Windows-Fehlermeldung "Der Datentraeger ist schreibgeschuetzt ...", die ich mit WinWaitActive und WinClose auch nicht geschlossen bekomme.
Hat jemand eine Idee oder einen anderen (besseren) Weg?
Danke schon mal vorab. |
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1871 Wohnort: Österreich
|
Verfasst am: Fr Mai 12, 2006 11:06 am Titel: |
|
|
Am Besten du fragst nach ob es Schreibgeschützt ist  | Code: | FileGetAttrib, Attribute, C:\
IfInStr(Attribute, "R")
msgbox, Drive is Readonly! | Einfach deinen Laufwerksbuchstaben einsetzen. Sollte funktionieren!
Thalon _________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
eagle213
Anmeldedatum: 12.05.2006 Beiträge: 3
|
Verfasst am: Fr Mai 12, 2006 11:47 am Titel: |
|
|
| Thalon hat Folgendes geschrieben: | Am Besten du fragst nach ob es Schreibgeschützt ist
...
Thalon |
Hmm,
Das funzt so leider nicht...
Die Dateien und Verzeichnisse auf dem USB-Stick haben selbst keinen Schreibschutz, der Stick selbst ist manchmal per Schieber schreibgeschuetzt. Deshalb mein Versuch, die Datei umzubenennen und danach den Errorlevel auszulesen (was soweit auch funzt).
Es wuerde mir auch schon helfen, die Windowsfehlermeldung zu unterdruecken (verstecken)
hier mal der Code auszugsweise:
| Code: |
SetTitleMatchMode, 2 ; Fenstertitelabfrage muss nur einen
; ; Teil des Fenstertitels enthalten
;
SetEnv, ePath, %A_WorkingDir% ; Auslesen des Arbeitsverzeichnisses
FileMove, %ePath%\wp, %ePath%\wpneu, 1 ; Schreibschutztest
msgbox, UmbenennVersuch
If Errorlevel ; Schreibschutz im aktuellen Verzeichnis?
{
SetEnv, eErrLev, 1 ; Errorlevel 1 merken
WinWait, %A_ScriptName%
WinClose, %A_ScriptName%
}
|
Die vorletzten 2 Zeilen (WinWait/WinClose) greifen bei der Windows-Schreibschutz-Fehlermeldung nicht... |
|
| Nach oben |
|
 |
Gast
|
Verfasst am: Fr Mai 12, 2006 12:31 pm Titel: |
|
|
Sofern diese deine Schreibweise überhaupt zulässig ist (ich denke ja), würde ich es trotzdem vorziehen einen Wert anzugeben. Beispiel:
If Errorlevel = 1
If Errorlevel <> 1
| Code: | SetEnv, ePath, %A_WorkingDir%
FileSetAttrib, ^A, %ePath%\AttribTest.txt ; Attribut toggeln
If ErrorLevel <> 0 ; Attributwechsel Fehlversuch
{
MsgBox, USB-Schreibschutz aktiv ?
Exit
}
FileSetAttrib, ^A, %ePath%\AttribTest.txt ; Attribut zurücksetzen | Ungetestet. |
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1871 Wohnort: Österreich
|
Verfasst am: Fr Mai 12, 2006 12:32 pm Titel: |
|
|
Du sollst auch nicht die Dateien abfragen sondern das Laufwerk selbst
Darum wurde oben auch als Example nur "C:\" angegeben...
Wenn du also im Windows-Explorer per "Eigenschaften" des Stick-Laufwerkes den Schreibschutz siehst sollte es so funktionieren...
Thalon _________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
BoBo Gast
|
Verfasst am: Fr Mai 12, 2006 12:41 pm Titel: |
|
|
| der Gast war ich. Weiss auch jetzt nicht wirklich, ob Thalon auf mich retourniert hat? |
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1871 Wohnort: Österreich
|
Verfasst am: Fr Mai 12, 2006 1:02 pm Titel: |
|
|
@BoBo
Nein, war nicht auf dich bezogen.
Deine Lösung (sofern sie prinzipiell funktioniert) ist der Mov-Lösung sicherlich vorzuziehen. Am Elegantesten wäre aber sicherlich die simple Schreibschutzabfrage (wie von mir vorgeschlagen), anstatt über Symptome auf den Zustand zu schließen. Ich vermute diese Lösung würde auch die Windows-Meldung hervorrufen.
Ich besitze leider keinen Stick mit Schreibschutzmöglichkeiten um zu sehen ob am Laufwerk das enstprechende Attribut gesetzt wird. Bei einem simplen Umsetzen des Status funktioniert obiger Code von mir...
Thalon _________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
eagle213
Anmeldedatum: 12.05.2006 Beiträge: 3
|
Verfasst am: Fr Mai 12, 2006 1:38 pm Titel: |
|
|
| Thalon hat Folgendes geschrieben: | ...
Wenn du also im Windows-Explorer per "Eigenschaften" des Stick-Laufwerkes den Schreibschutz siehst sollte es so funktionieren...
Thalon |
Noe, funktioniert bei mir nicht. Windows Explorer zeigt nichts an.
Ich habe den Laufwerksbuchstaben mit und ohne "\" im Script ausprobiert ->
| Code: |
msgbox, %Attribute%
|
zeigt das Ergebnis: "D" (wohl fuer Directory)
Vielleicht kann das Betriebssystem den Schreibschutz gar nicht auslesen, aehnlich wie beim mechanischen Schreibschutz der 3,5-Zoll-Diskette?
Ich teste mal Bobo's Zeilen und melde mich wieder... |
|
| Nach oben |
|
 |
Gast
|
Verfasst am: Fr Mai 12, 2006 4:44 pm Titel: |
|
|
So, hab noch paar andere Wege probiert...
Auch mit Bobo's Code kommt die Fehlermeldung.
Windows ist anscheinend nicht in der Lage, den Schreibschutz abzufragen.
Erst wenn wirklich versucht wird zu schreiben, reagiert Windows mit der Schreibschutz-Fehlermeldung.
Letzte Moeglichkeit bleibt also nur noch, die Fehlermeldung abzufangen.
Hat noch jemand eine Idee? Mit WinWait bzw. WinClose habe ich keine Erfolge erzielen koennen... |
|
| Nach oben |
|
 |
BoBo Gast
|
Verfasst am: Fr Mai 12, 2006 10:39 pm Titel: |
|
|
| Code: | SetTimer, KickIt, 500
Return
KickIt:
IfWinActive, HierDerExakteTitelVondemIchNichtGlaubeDasErMitA_ScriptNameIdentischIst
WinClose
Return
SetEnv, ePath, %A_WorkingDir%
FileSetAttrib, ^A, %ePath%\AttribTest.txt ; Attribut toggeln
If ErrorLevel <> 0 ; Attributwechsel Fehlversuch
{
MsgBox, USB-Schreibschutz aktiv ?
Exit
}
FileSetAttrib, ^A, %ePath%\AttribTest.txt ; Attribut zurücksetzen | Ungetestet. Aber eine SetTimerRoutine wirds final, definitiv! |
|
| Nach oben |
|
 |
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|