VBScript mit WINscp für einfachen FTP Transfer und nachträglichem verschieben der Datei in ein erledigt Verzeichnis
Hallo,
leider soll ich auf den neueren Servern(Win2016R2) keine *.Bat Dateien mehr laufen lassen.
Hier soll nun alles über VBScript laufe.
Habe davon leider wenig Ahnung. Auch muss ich mich erst mal wieder in dem hier überarbeitetem Forum zurechtfinden.
Aber eigentlich sollte ein einfacher FTP Transfer doch nicht so aufwendig sein.
Verwenden muss ich die portable Version von WINscp.
Im Netz habe ich folgendes Skript gefunden und für mich modifiziert:
Ich starte dann dieses Script über eine*.cmd
Aber als Ergebnis erhalte ich nur immer:
Kann mir jemand auf die Sprünge helfen?
Danke
Gruß
Keios
leider soll ich auf den neueren Servern(Win2016R2) keine *.Bat Dateien mehr laufen lassen.
Hier soll nun alles über VBScript laufe.
Habe davon leider wenig Ahnung. Auch muss ich mich erst mal wieder in dem hier überarbeitetem Forum zurechtfinden.
Aber eigentlich sollte ein einfacher FTP Transfer doch nicht so aufwendig sein.
Verwenden muss ich die portable Version von WINscp.
Im Netz habe ich folgendes Skript gefunden und für mich modifiziert:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
Const intForReading = 1
scp_script_dir="\\192.168.2.1\Batch\Batch_TEST"
scp_script_dir="\\192.168.2.1\Batch\TEST\workdir"
strTextFiles = "hello.txt"
arrTextFiles = Split(strTextFiles, ";")
For intFile = LBound(arrTextFiles) To UBound(arrTextFiles)
Set objTextFile = objFSO.OpenTextFile(arrTextFiles(intFile), intForReading, False)
While Not objTextFile.AtEndOfStream
strServerName = objTextFile.ReadLine
strScriptText = "# Auto-generated script file For server: " & strServerName & vbCrLf
strScriptText = strScriptText & "# Automatically answer all prompts negatively not to stall" & vbCrLf
strScriptText = strScriptText & "# the script on errors" & vbCrLf
strScriptText = strScriptText & "option batch on" & vbCrLf
strScriptText = strScriptText & "# Disable overwrite confirmations that conflict with the previous" & vbCrLf
strScriptText = strScriptText & "option confirm off" & vbCrLf
strScriptText = strScriptText & "# Connect using a password" & vbCrLf
strScriptText = strScriptText & "# open User:****" & vbCrLf
strScriptText = strScriptText & "# Connect" & vbCrLf
strScriptText = strScriptText & "open root:ftp.server.com" & vbCrLf
strScriptText = strScriptText & "# Change remote directory" & vbCrLf
strScriptText = strScriptText & "cd /upload" & strServerName & vbCrLf
strScriptText = strScriptText & "# Force binary mode transfer" & vbCrLf
strScriptText = strScriptText & "option transfer binary" & vbCrLf
strScriptText = strScriptText & "# Upload file to the directory in SAP" & vbCrLf
strScriptText = strScriptText & "put " & strServerName & "*.txt \\192.168.2.1\Export" & vbCrLf
strScriptText = strScriptText & "# Disconnect" & vbCrLf
strScriptText = strScriptText & "close" & vbCrLf
strScriptText = strScriptText & "# Exit WinSCP" & vbCrLf
strScriptText = strScriptText & "exit"
Set objOutputFile = objFSO.CreateTextFile(scp_script_dir & "\winscp_script.txt", True)
objOutputFile.Write strScriptText
objOutputFile.Close
Set objOutputFile = Nothing
MsgBox "About to run:" & VbCrLf & """C:\Tools\WinSCP\WinSCP.exe"" /console /script=" & scp_script_dir & "\winscp_script.txt" & _
VbCrLf & "When you click OK, the winscp_script.txt file will be displayed for you to check, then when you close it, you will be asked whether to run that script."
objShell.Run "notepad """ & scp_script_dir & "\winscp_script.txt" & """", 1, True
strResponse = MsgBox("Do you want to run the winscp_script.txt file?", vbYesNo, "Run Script File?")
If strResponse = vbYes Then
objShell.Run """D:\Tools\WinSCP\WinSCP.exe"" /console /script=" & scp_script_dir & "\winscp_script.txt", 1, True
End If
Wend
objTextFile.Close
Set objTextFile = Nothing
Next
MsgBox "Done"
Ich starte dann dieses Script über eine*.cmd
cscript "\\citrix-alias\citrixroot$\Gruen\Batch\WI_Batch_TEST\Test_FTP.vbs"
Aber als Ergebnis erhalte ich nur immer:
\\192.168.2.1\Batch\Test_FTP.vbs(12, 8) Microso
ft VBScript runtime error: File not found
Kann mir jemand auf die Sprünge helfen?
Danke
Gruß
Keios
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 371764
Url: https://administrator.de/contentid/371764
Ausgedruckt am: 22.11.2024 um 08:11 Uhr
17 Kommentare
Neuester Kommentar
Hallo,
nun ja, die Meldung besagt ja letztendlich, daß er die Datei hello.txt nicht findet. Liegt die denn in dem Verzeichnis, in dem auch das Script ausgeführt wird?
Ansonsten zwei Tips zur weiteren Suche:
- Was passiert, wenn Du den Pfad mit angibst (\\UNC\Pfad\hello.txt)?
- Was passiert, wenn Du nicht UNC-Pfade, sondern Laufwerksmappings verwendest (F:\...\hello.txt)?
Gruß
Apophis
P.S. Warum soll man keine BAT bzw. CMD-Datei mehr ausführen und alles in VBS machen? Das erschließt sich mir gerade nicht. Gehen tut's prima.
nun ja, die Meldung besagt ja letztendlich, daß er die Datei hello.txt nicht findet. Liegt die denn in dem Verzeichnis, in dem auch das Script ausgeführt wird?
Ansonsten zwei Tips zur weiteren Suche:
- Was passiert, wenn Du den Pfad mit angibst (\\UNC\Pfad\hello.txt)?
- Was passiert, wenn Du nicht UNC-Pfade, sondern Laufwerksmappings verwendest (F:\...\hello.txt)?
Gruß
Apophis
P.S. Warum soll man keine BAT bzw. CMD-Datei mehr ausführen und alles in VBS machen? Das erschließt sich mir gerade nicht. Gehen tut's prima.
Hallo,
bleibt immer noch die Frage, _wo_ die Datei liegt. Der von Dir definierte Pfad scp_script_dir hat jedenfalls mit der Datei nichts zu tun - Du hast halt nur den Dateinamen ohne Pfad angegeben und verbindest nicht Pfad und Datei.
Gruß
Apophis
P.S. Was für Admins? Wenn das Script auf dem Server laufen soll, musst Du selber Admin sein, oder täusche ich mich da?
bleibt immer noch die Frage, _wo_ die Datei liegt. Der von Dir definierte Pfad scp_script_dir hat jedenfalls mit der Datei nichts zu tun - Du hast halt nur den Dateinamen ohne Pfad angegeben und verbindest nicht Pfad und Datei.
Gruß
Apophis
P.S. Was für Admins? Wenn das Script auf dem Server laufen soll, musst Du selber Admin sein, oder täusche ich mich da?
Zitat von @holli.zimmi:
Hi,
eigentlich sollte man VB-Skript nicht mehr verwenden!
Ich glaube nicht, das Dir jemand dann hilft!
Gruß
Holli
Hi,
eigentlich sollte man VB-Skript nicht mehr verwenden!
Ich glaube nicht, das Dir jemand dann hilft!
Gruß
Holli
Tach,
harter Tobak Herr Kollege.
Mich würde aber mal interessieren, wie so man VBScript nicht mehr verwenden sollte.
Denn ich scripte ehrlich gesagt sehr gerne damit und Office-Macros werden immernoch mit VBA gebaut.
Und solange Windows VBS und Office VBA verstehen, sehe ich noch keinen Grund für einen Wechsel.
Verdammt sogar HTA funktioniert immernoch.
Hi,
Totenkopfanbeter @holli.zimmi ist unsinnig.
Wie schon von den anderen genannt:
Das Script findet die "hello.txt" nicht. Einfach mit vollem Pfad angeben oder diesen dynamisch zusammensetzen. Dann klappt's auch mit der Nachbarin ....
E.
harter Tobak Herr Kollege.
Mich würde aber mal interessieren, wie so man VBScript nicht mehr verwenden sollte.
Denn ich scripte ehrlich gesagt sehr gerne damit und Office-Macros werden immernoch mit VBA gebaut.
Und solange Windows VBS und Office VBA verstehen, sehe ich noch keinen Grund für einen Wechsel.
Verdammt sogar HTA funktioniert immernoch.
Vollkommen richtig. Diese Aussagen vom Mich würde aber mal interessieren, wie so man VBScript nicht mehr verwenden sollte.
Denn ich scripte ehrlich gesagt sehr gerne damit und Office-Macros werden immernoch mit VBA gebaut.
Und solange Windows VBS und Office VBA verstehen, sehe ich noch keinen Grund für einen Wechsel.
Verdammt sogar HTA funktioniert immernoch.
Wie schon von den anderen genannt:
Das Script findet die "hello.txt" nicht. Einfach mit vollem Pfad angeben oder diesen dynamisch zusammensetzen. Dann klappt's auch mit der Nachbarin ....
E.
Darf ich auch fragen, wieso?
Weil ich doof bin und Dich verwechselt habe. Sorry.
Ich meinte, dass ich die absolute Aussage von @holli.zimmi bzgl. Nicht-mehr-Verwendung von VBscript unsinnig ist. Dann könnte - müsste! - man das Gleiche über Batch sagen.
BeiDerMachtVonDeinemSkull
Habe korrigiert ...
Ich meinte, dass ich die absolute Aussage von @holli.zimmi bzgl. Nicht-mehr-Verwendung von VBscript unsinnig ist. Dann könnte - müsste! - man das Gleiche über Batch sagen.
BeiDerMachtVonDeinemSkull
Habe korrigiert ...
Zitat von @emeriks:
Weil ich doof bin und Dich verwechselt habe. Sorry.
Ich meinte, dass ich die absolute Aussage von @holli.zimmi bzgl. Nicht-mehr-Verwendung von VBscript unsinnig ist. Dann könnte - müsste! - man das Gleiche über Batch sagen.
BeiDerMachtVonDeinemSkull
Habe korrigiert ...
Weil ich doof bin und Dich verwechselt habe. Sorry.
Ich meinte, dass ich die absolute Aussage von @holli.zimmi bzgl. Nicht-mehr-Verwendung von VBscript unsinnig ist. Dann könnte - müsste! - man das Gleiche über Batch sagen.
BeiDerMachtVonDeinemSkull
Habe korrigiert ...
Hab Dank für die Richtigstellung.
Alles gut.
Per Definition?
Mal als Hinweis:
Selbst unter Windows Server 2016 liefert Microsoft noch von Haus aus viele VBS-Scripte mit.
Mal als Hinweis:
Selbst unter Windows Server 2016 liefert Microsoft noch von Haus aus viele VBS-Scripte mit.
dir %windir%\*.vbs /s
Zitat von @emeriks:
Selbst unter Windows Server 2016 liefert Microsoft noch von Haus aus viele VBS-Scripte mit.
na klar - genau so wie die CMD als Ersatz für die DOS-Eingabeaufforderung...Selbst unter Windows Server 2016 liefert Microsoft noch von Haus aus viele VBS-Scripte mit.
Zitat von @emeriks:
Per Definition?
Mal als Hinweis:
Selbst unter Windows Server 2016 liefert Microsoft noch von Haus aus viele VBS-Scripte mit.
Per Definition?
Mal als Hinweis:
Selbst unter Windows Server 2016 liefert Microsoft noch von Haus aus viele VBS-Scripte mit.
> dir %windir%\*.vbs /s
>
Hi,
danke das Ihr darauf gesprungen seid! Wollt nur wissen, was Ihr darüber denkt!
Meine Frage ist nur dazu - wie sichere ich ab, das keine fremden Scripte gestartet bzw. oder die eigene Scripte - umgeschrieben und dann damit nicht mißbraucht werden?
Habe noch ein Script-Buch zu Hause, leider bin ich nicht dazu gekommen es zu lernen.
Gruß
Holli
Meine Frage ist nur dazu - wie sichere ich ab, das keine fremden Scripte gestartet bzw. oder die eigene Scripte - umgeschrieben und dann damit nicht mißbraucht werden?
Das ist eine ganz andere, alte Übung, anderes Thema. Bei CMD und VBscript kannst Du das nur über "externe" Mechanismen bewerkstelligen. NTFS-Berechtigungen, Überwachungen, permanente Kontrolle der Dateien usw.Deshalb wurde sicher bei PowerShell eingeführt, dass man Scripte signieren und nur die Ausführung signierter Scripte erlauben kann.