Netzlaufwerkspfad auslesen und in einen String kopieren // WinCC V7.2

Asphaltbeule

Level-1
Beiträge
48
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,
ich habe folgendes Problem. Bei unserem Kunde werden csv. Files auf einen Netzlaufwerk gespeichert und ich muss dem Kunden, in einem Telegramm, mitteilen wo sich die Daten befinden.

Mein Speicherpfad sieht so aus X: Datenschreiber

Da X: ein Netzlaufwerk ist, befindet sich "dahinter" der folgenden Pfad:
EC005030 (\\144.187.46.154\weiweiwdf\$dferrt\004\Prod_Data\EC050)(X: )

Der Laufwerksbuchstabe wird sich nicht ändern, nur der Rest kann sich im Laufe der Zeit ändern.
Jetzt frag ich mich wie ich diese Pfad Angabe mit Hilfe von WinCC auslesen kann und in einen String kopieren kann.

Danke im Voraus

Gruß
 
Gegenfrage.

X ist ja ein Netzlaufwerk das am PC angelegt sein muss und das jemand auf besagten Pfad verbunden haben muss.
Sonst könntest du ja nicht versuchen den kompletten Pfad dahinter auszulesen.

Wenn sich der Pfad hinter X ändert, dann muss doch auch jemand das Netzlaufwerk am PC entsprechend anpassen. Damit der neue Pfad bekannt wird.
Nur dann wäre es für dich möglich den neuen Pfad hinter X auszulesen.

Was spricht also dagegen den Pfad: X: Datenschreiber zu verwenden?
Das Netzlaufwerk X muss ja (für deine Annahme) immer einen gültigen Pfad haben
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi ,
Ich bin bei Siemens, da wird das Netzwerk von einem anderem Standort aus verwaltet.
Auf dem PC wird eine Batch Datei ausgeführt die für das Anlegen der Verknüpfung zuständig ist.
Unter Umstände bekommt es vor Ort niemand mit wenn sich der Pfad ändert.
Aus dem Grund benötige irgendwas um diesen Pfad auszulesen.
Gruß
 
Ja schon klar.

Aber selbst wenn der Netzwerkpfad per Batch verwaltet/geändert wird, ist der Pfad X: ja trotzdem immer gültig auf das Laufwerk auf das du hin willst, oder?

OB X nun..
(\\144.187.46.154\weiweiwdf\$dferrt\004\Prod_Data\EC050)
oder...
(\\144.187.46.154\weiweiwdf\$dferrt\004\Prod_Data\WASAUCHIMMMERFÜREINPFAD)
ist...

X = X :ROFLMAO:
 
Ja richtig, X: ist immer gültig .
ICH muß dennoch in einem Telegramm den Speicherort senden und da reicht es leider nicht, wenn ich nur das X:Datenschreiber sende.
An dieser Stelle wird der ganze Pfadname übermittelt. Und dieser Name kann sich ändern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK, jetzt (Telegramm senden) ist mir klar warum du den absoluten Pfad haben willst.

Du könntest in Vbs folgendes machen (kurz google bemüht)
Code:
Set WshNetwork = WScript.CreateObject("WScript.Network") 
Set oDrives = WshNetwork.EnumNetworkDrives 

WScript.Echo "Zuordnungen der Netzlaufwerke:" 

For i = 0 to oDrives.Count - 1 Step 2 
    WScript.Echo "Laufwerk " & oDrives.Item(i) & " = " & oDrives.Item(i+1) 
Next

Set WshNetwork = Nothing
Set oDrives = Nothing
Das ist ein Auszug aus der Beschreibung der EnumNetworkDrives Method.
Listet alle Netzlaufwerke inkl. Pfade auf.

Wenn ich den Code hier bei mir als .vbs abspeichere und ausführe bekommen ich in den Echo-Nachrichten der For-Schleife für
oDrives.Item(i) den Laufwerksbuchstaben + Doppelpunkt
oDrives.Item(i+1) den Absolutpfad

Das müsste sich so (ohne die Echo-Befehle) eigentlich ins WinCC-vbs übernehmen lassen.
Wenn du also innerhalb der for-Schleife einen Vergleich auf "X:" einführst und den Wert aus oDrives.Item(i+1) übernimmst, müsstest du haben was du suchst.
 
Zuletzt bearbeitet:
Hallo Ronin,

danke erstmal für die schnelle Antwort.

Vielleicht könntest Du mir noch einen kleine Hilfestellung beim Code geben.
Ich habe leider von VBS null Ahnung.

Im Code gibt es den "Dateipfad_MES" dort sollte der Laufwerkspfad eingetragen werden.
Der Dateipfad_MES ist eine 8-Bit Textvariable und ist 101 Zeichen lang.
Der Laufwerksbuchstabe ist ja immer X:

Vielen Dank im voraus

Netzlaufwerk auslesen_VBS.jpg

Code:
Sub procedure1
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set oDrives = WshNetwork.EnumNetworkDrives

'WScript.Echo "Zuordnung der Netzlaufwerke")

For i = 0 To oDrives.Count - 1 Step 2
'WScript.Echo "Laufwerk " & oDrives.Item(i) & " = " & odrives.Item(i+1)
Next
Set WshNetwork = Nothing
Set oDrives = Nothing
End Sub



'Dateipfad_MES
 
Innerhalb der for schleife müsste sowas in der Art stehen
Code:
If odrives.Item(i) = "X:" Then
      SmartTags("Dateipfad_MES") = " & odrives.Item(i+1)
End If
Kann jetzt schlecht. Ich schau dir heute Abend mal drüber.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
So, jetzt hatte ich ein wenig Zeit es aus-zu-programmieren.
Im großen und ganzen ist es das selbe wie oben. Habe nur die nötigen Variablendefinitionen + ein paar Fehlererkennungen eingefügt.

WICHTIG!!!
Anzumerken ist aber dass EnumNetworkDrives nur erfolgreich verbundene Netzlaufwerke zurückliefert.
Nicht-verbundene Netzlaufwerke (werden im Arbeitsplatz mit einem roten X angezeigt) sind nicht enthalten.
Wenn du damit leben kannst ist OK, sonst wird ein wenig schwieriger.

Getestet und WinCC v7.3 als Buttonscript, kann aber überall verwendet werden.
Code:
On Error Resume Next

Dim WshNetwork, oDrives
Dim Path
Dim i, bOK

'WScript.Network - Objekt
Set WshNetwork = CreateObject("WScript.Network") 
Set oDrives = WshNetwork.EnumNetworkDrives

Path = ""
bOK = FalSE
If Err.Number = 0 Then
    'Collection nach vorgegebenen Laufwerksbuchstaben durchsuchen
    For i = 0 To oDrives.Count - 1 Step 2 
         If oDrives.Item(i) = "X:" Then    'Vorgabe Laufwerksbuchstabe
            Path = oDrives.Item(i+1) 
            Exit For
        End If
    Next
    'Prüfe erhaltenen Pfad: Erste beiden Stellen "\\"; Länge < 100
    If (Left(Path,2) = "\\") And (Len(Path)<100) Then
        SmartTags("Dateipfad_MES") = Path   'Pfad auf WinCC-Variable übergeben
        bOK = TrUE
    End If
End If

If bOK = FalSE Then
    'Mögliche Fehlerreaktion
End If

Set WshNetwork = Nothing
Set oDrives = Nothing
 
Zuletzt bearbeitet:
Hey super,
Ich habe es gerade ausprobiert und es funzt.
Morgen werde ich dann die Funktion zyklisch ansteuern und dann sollte es das gewesen sein.

Besten Dank nochmal

Gruß
Asphaltbeule
 
Zurück
Oben