Skript "vergisst" 2. Laufwerk

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Skript "vergisst" 2. Laufwerk

Post by Best-Code-in-Use » 16 Jun 2017, 12:00

Läuft, ich danke Dir...
Habe es jetzt auf 2 Minuten eingestellt, da klappt auch die erneute Verbindung.

Mein Dank auch an just me, der bei der ersten Version geholfen hat...

Post by Best-Code-in-Use » 16 Jun 2017, 06:08

@jNizM

Vielen Dank, das werde ich mal testen...

Re: Skript "vergisst" 2. Laufwerk

Post by jNizM » 16 Jun 2017, 06:06

Also ich würde das so machen (ungetestet)

Code: Select all

#NoEnv
#NoTrayIcon
#SingleInstance Force
#Persistent

global LW_V  := "V:\###_Testdatei_Synchronisation---Nicht-Loeschen.txt"
global LW_W  := "W:\###_Testdatei_Synchronisation---Nicht-Loeschen.txt"
global TIMER := 1000 * 60 * 1

SetTimer, Verbinden, % TIMER

Verbinden:
    ; Wenn die Laufwerke vorhanden sind, mache nichts
    if (FileExist(LW_V)) && (FileExist(LW_W))
        return

    ; Wenn die Laufwerke nicht vorhanden sind, pinge den Server ob er erreichbar ist, wenn nicht, mache nichts
    RunWait, %comspec% /c ping -n 1 Dell-NB-PC,, Hide UseErrorLevel
    if (ErrorLevel)
        return

    ; Wenn Server erreichbar ist und die Laufwerke sind nicht vorhanden, binde sie ein
    if !(FileExist(LW_V))
        Run, %comspec% /c net use V: \\Dell-NB-PC\Daten-D /persistent:NO,, Hide

    if !(FileExist(LW_W))
        Run, %comspec% /c net use W: \\Dell-NB-PC\Sicherung-E /persistent:NO,, Hide
return
edit code: #1

Skript "vergisst" 2. Laufwerk

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

Top