Post by Best-Code-in-Use » 15 Jun 2017, 09:12
Hallo,
ich habe ein Skript das automatisch meine Notebook Laufwerke verbindet, sobald das Notebook im Netzwerk verfügbar ist.
Das Problem ist nur das der 2. Timer nur noch das Laufwerk "V" und nicht mehr das Laufwerk "W" verbindet.
Code: Select all
If (V := FileExist("V:\###_Testdatei_Synchronisation---Nicht-Loeschen.txt")) && (W := FileExist("W:\###_Testdatei_Synchronisation---Nicht-Loeschen.txt"))
Bei der ersten Verbindung werden kurioserweise beide Laufwerke verbunden.
Gibt es eine Möglichkeit die Abfrage des 2. Laufwerkes im 2. Timer zu erzwingen?
Code: Select all
/*
Dieses Skript verbindet meinen PC mit den Festplatten des Notebooks sobald es im Netzwerk verfuegbar ist.
Hierzu wird ein Ping gesendet und bisher habe ich es per Aufgabenplanung geregelt.
+++ Die ersten 15 Minuten lang jede Minute >>>>> Es wird nachgesehen, ob das Laufwerk, bzw. mein Notebook verfügbar ist und ggf. eine Verbindung hergestellt.
+++ Anschließend alle 3 Minuten >>>>> Es wird nachgesehen, ob das Laufwerk, bzw. mein Notebook verfügbar ist und ggf. eine Verbindung hergestellt.
(Ping und die Verbindung von Laufwerk V & W)
+++ Wichtig ist auch das der Timer auch nach einer erfolgreichen Verbindung weiter aktiv bleibt, da die Verbindung nicht permanent hergestellt werden darf.
(Hintergrund= Der PC läuft manchmal die ganze Woche durch und das Notebook wird zwischendurch getrennt und die Laufwerke gleichzeitig abgemeldet)
*/
#NoEnv ; Keine Umgebungsvariablen nutzen
#NoTrayIcon ; Das AHK Symbol wird nicht angezeigt
#SingleInstance force ; Das Skript wird bei Neustart ohne Nachfrage ersetzt
#Persistent ; Das Skript beibt auch nach einem Return aus einem Timer aktiv.
Start := A_Now ; Startzeitpunkt merken
Phase1 := 15 ; Dauer der ersten Phase nach dem Start in Minuten
Timer1 := 60 * 1000 ; in Phase 1 jede Minute aufrufen
Timer2 := 3 * Timer1 ; danach alle 3 Minuten aufrufen
SetTimer, Verbinden, %Timer1%
Gosub, Verbinden ; Timer nach dem Start sofort aufrufen
Return
Verbinden:
; Pruefen, ob die erste Phase abgelaufen ist
If (Phase1) {
Minuten := A_Now
Minuten -= Start, M
If (Minuten >= Phase1) { ; sie ist vorbei!
SetTimer, Verbinden, %Timer2%
Phase1 := 0
}
}
; Pruefen, ob die Laufwerke verbunden sind
; Hier kann auch ein Pfad zu einer Datei angegeben werden, z.B.: V:\###_Testdatei_Synchronisation---Nicht-Loeschen.txt
If (V := FileExist("V:\###_Testdatei_Synchronisation---Nicht-Loeschen.txt")) && (W := FileExist("W:\###_Testdatei_Synchronisation---Nicht-Loeschen.txt"))
Return ; beide Laufwerke sind verbunden, keine Aktion notwendig
; Die Konsole (cmd) wird versteckt (, "Arbeitsverzeichniss", Hide) gestartet und es wird per Ping geprueft - ob Dell-PC existiert
RunWait, %ComSpec% /c ping -n 1 Dell-NB-PC, , Hide UseErrorLevel
If (ErrorLevel) ; der PC / das Laufwerk ist nicht erreichbar
Return ; keine Aktion moeglich
; Fehlende Laufwerke verbinden
; Fuehre die Konsole (cmd) versteckt (, "Arbeitsverzeichniss", Hide) aus und verbinde per Net Use mit Dell-PC als Laufwerk
If (V = "") ; Laufwerk V verbinden
Run %ComSpec% /c net use V: \\Dell-NB-PC\Daten-D /persistent:no , , Hide
If (W = "") ; Laufwerk W verbinden
Run %ComSpec% /c net use W: \\Dell-NB-PC\Sicherung-E /persistent:no , , Hide
Return
Hallo,
ich habe ein Skript das automatisch meine Notebook Laufwerke verbindet, sobald das Notebook im Netzwerk verfügbar ist.
Das Problem ist nur das der 2. Timer nur noch das Laufwerk "V" und nicht mehr das Laufwerk "W" verbindet.
[code]If (V := FileExist("V:\###_Testdatei_Synchronisation---Nicht-Loeschen.txt")) && (W := FileExist("W:\###_Testdatei_Synchronisation---Nicht-Loeschen.txt"))[/code]
Bei der ersten Verbindung werden kurioserweise beide Laufwerke verbunden.
[b]Gibt es eine Möglichkeit die Abfrage des 2. Laufwerkes im 2. Timer zu erzwingen?[/b]
[code]/*
Dieses Skript verbindet meinen PC mit den Festplatten des Notebooks sobald es im Netzwerk verfuegbar ist.
Hierzu wird ein Ping gesendet und bisher habe ich es per Aufgabenplanung geregelt.
+++ Die ersten 15 Minuten lang jede Minute >>>>> Es wird nachgesehen, ob das Laufwerk, bzw. mein Notebook verfügbar ist und ggf. eine Verbindung hergestellt.
+++ Anschließend alle 3 Minuten >>>>> Es wird nachgesehen, ob das Laufwerk, bzw. mein Notebook verfügbar ist und ggf. eine Verbindung hergestellt.
(Ping und die Verbindung von Laufwerk V & W)
+++ Wichtig ist auch das der Timer auch nach einer erfolgreichen Verbindung weiter aktiv bleibt, da die Verbindung nicht permanent hergestellt werden darf.
(Hintergrund= Der PC läuft manchmal die ganze Woche durch und das Notebook wird zwischendurch getrennt und die Laufwerke gleichzeitig abgemeldet)
*/
#NoEnv ; Keine Umgebungsvariablen nutzen
#NoTrayIcon ; Das AHK Symbol wird nicht angezeigt
#SingleInstance force ; Das Skript wird bei Neustart ohne Nachfrage ersetzt
#Persistent ; Das Skript beibt auch nach einem Return aus einem Timer aktiv.
Start := A_Now ; Startzeitpunkt merken
Phase1 := 15 ; Dauer der ersten Phase nach dem Start in Minuten
Timer1 := 60 * 1000 ; in Phase 1 jede Minute aufrufen
Timer2 := 3 * Timer1 ; danach alle 3 Minuten aufrufen
SetTimer, Verbinden, %Timer1%
Gosub, Verbinden ; Timer nach dem Start sofort aufrufen
Return
Verbinden:
; Pruefen, ob die erste Phase abgelaufen ist
If (Phase1) {
Minuten := A_Now
Minuten -= Start, M
If (Minuten >= Phase1) { ; sie ist vorbei!
SetTimer, Verbinden, %Timer2%
Phase1 := 0
}
}
; Pruefen, ob die Laufwerke verbunden sind
; Hier kann auch ein Pfad zu einer Datei angegeben werden, z.B.: V:\###_Testdatei_Synchronisation---Nicht-Loeschen.txt
If (V := FileExist("V:\###_Testdatei_Synchronisation---Nicht-Loeschen.txt")) && (W := FileExist("W:\###_Testdatei_Synchronisation---Nicht-Loeschen.txt"))
Return ; beide Laufwerke sind verbunden, keine Aktion notwendig
; Die Konsole (cmd) wird versteckt (, "Arbeitsverzeichniss", Hide) gestartet und es wird per Ping geprueft - ob Dell-PC existiert
RunWait, %ComSpec% /c ping -n 1 Dell-NB-PC, , Hide UseErrorLevel
If (ErrorLevel) ; der PC / das Laufwerk ist nicht erreichbar
Return ; keine Aktion moeglich
; Fehlende Laufwerke verbinden
; Fuehre die Konsole (cmd) versteckt (, "Arbeitsverzeichniss", Hide) aus und verbinde per Net Use mit Dell-PC als Laufwerk
If (V = "") ; Laufwerk V verbinden
Run %ComSpec% /c net use V: \\Dell-NB-PC\Daten-D /persistent:no , , Hide
If (W = "") ; Laufwerk W verbinden
Run %ComSpec% /c net use W: \\Dell-NB-PC\Sicherung-E /persistent:no , , Hide
Return[/code]