2016-11-27 1 views
1

Ich bin ein absoluter Anfänger mit VB daher könnte ich einige dumme Fragen stellen.
Ich habe ein VB-Skript, das über eine Batch-Datei ausgelöst wird, was dazu führt, dass Daten für den letzten Tag importiert werden. Unten ist der Code für VB und Batch-Datei.
Bitte lassen Sie es mich wissen, wenn Sie einen Fehler im Code sehen.Auto Import Script funktioniert nicht

VB Script

rem 
rem XLink_Import.vbs 
rem 

Set oShell = WScript.CreateObject("WScript.Shell") 

' filename = oShell.ExpandEnvironmentStrings("today_xlink.bat") 
' Set objFileSystem = CreateObject("Scripting.fileSystemObject") 
' Set oFile = objFileSystem.CreateTextFile(filename, TRUE) 

Dim i 
Dim ImportStartOffset, ImportedNumberOfDays 

If WScript.Arguments.length > 0 Then 
    For i=0 to WScript.Arguments.length-1 
     Arg = WScript.Arguments(i) 
     If Left(Arg,1) = "-" Then 
      If (Arg = "-o") Then 
       ImportStartOffset = WScript.Arguments(i+1) 
      End if 
      If (Arg = "-n" or Arg = "-l") Then 
       ImportedNumberOfDays = WScript.Arguments(i+1) 
      End if 
     End if 
    Next 
End If 

rem Prepare the import start date 

Dim Dy, Mth 
Dim ImportDate 
ImportDate = Now + ImportStartOffset 
Dy = Day(ImportDate) 
Mth = Month(ImportDate) 
If Len(Dy) = 1 Then Dy = "0" & Dy 
If Len(Mth) = 1 Then Mth = "0" & Mth 
ImportStartDate = Dy & "/" & Mth & "/" & Year(ImportDate) 

rem Prepare import script to run (not useed yet) 
rem oFile.WriteLine("isps_ul.exe -t -d " & todaydate & " -L 1") 
rem oFile.Close 

rem Run XLink import 

wscript.echo "isps_ul.exe -t -d " & ImportStartDate & " -L " & ImportedNumberOfDays 
oShell.Run "isps_ul.exe -t -d " & ImportStartDate & " -L " & ImportedNumberOfDays, 1, true 

Batch File

@echo off 
rem 
rem XLink_Import.bat 
rem 
rem Manually starts an Xlink import starting today + a StartOffset of some days. 
rem Imported number of days can also be set. 
rem 

set ImportStartOffset=0 
set ImportedNumberOfDays=1 

cscript XLink_Import.vbs -o %ImportStartOffset% -n %ImportedNumberOfDays% 

pause 
+0

erhalten Sie einen Fehler beim Ausführen Ihres Skripts? wenn ja, welche und an welcher Linie? Warum der Stapel, können Sie die Konfiguration im Skript selbst oder mit Parametern aus der Befehlszeile? Sie sollten die Ausführungszeichenfolge auch einer Variablen als DRY zuweisen. – peter

+0

Hallo @peter - Danke für Ihre Antwort, Nein, ich bekomme keine Fehlermeldung, ich bekomme die Nachricht "isps_ul.exe -t -d28/11/2016 -L" Grund für die Verwendung von Batch ist, dass ich diesen Job automatisieren möchte und die einzige Weise, die ich kenne, ist die Verwendung von Windows Task Scheduler. Es tut mir leid, aber ich verstehe den DRY Teil (Bitte vergib meine Unwissenheit ich gerade angefangen) –

Antwort

0

Sie beide nicht eine Charge benötigen und ein Skript, von entweder wäre genug, tut das Ganze in Batch würde erfordern mit einigen Suggeling mit speziellen Parametern und ich bin nicht in das, also werde ich Ihr Skript ein bisschen wie folgt anpassen. Da Sie Ihre 2 Konfigurationsvariablen in der Windows-Umgebung behalten, können Sie sie auch aus VBScript lesen. Eine andere Möglichkeit wäre, von einer Konfigurationsdatei aus der Befehlszeile zu lesen, wie Sie es getan haben oder im Skript selbst zu behalten.

Ihr mittlerer Teil, der sicherstellt, dass das Datum speleld korrekt ist, kann weggelassen werden, wenn Sie diese Daten in der Konfiguration (Umgebungsvariablen) korrekt einstellen.

Wenn Ihr Import funktioniert, sollten Sie vorher überprüfen, indem Sie ausführen, was als Befehl angezeigt wird, also zB "eisps_ul.exe -t -d28/11/2016 -L" sollte laufen, andernfalls suchen Sie zuerst nach diesem Problem.

Was ich in meinem Kommentar über DRY bedeutet, bedeutet, dass Sie Dinge nicht wiederholen sollten, im Falle Ihres Befehls können Sie den verketteten Befehl in einer Variablen speichern und zum Anzeigen und Ausführen verwenden.

Dim ImportStartOffset, ImportedNumberOfDays, oShell, command, Dy, Mth, ImportDate, ImportStartDate 
Constant WaitOnReturn = true, WindowStyle = 1 '1 = Activate and display 

'read configuration environment variables 
Set oShell   = CreateObject("WScript.Shell") 
ImportStartOffset = wshShell.ExpandEnvironmentStrings("%ImportStartOffset%") 
ImportedNumberOfDays = wshShell.ExpandEnvironmentStrings("%ImportedNumberOfDays%") 

'Prepare the import start date (not necessary if environmentvariables would be configured well) 
ImportDate = Now + ImportStartOffset 
Dy = Day(ImportDate) 
Mth = Month(ImportDate) 
If Len(Dy) = 1 Then Dy = "0" & Dy 
If Len(Mth) = 1 Then Mth = "0" & Mth 
ImportStartDate = Dy & "/" & Mth & "/" & Year(ImportDate) 

'Run XLink import 
command = "isps_ul.exe -t -d " & ImportStartDate & " -L " & ImportedNumberOfDays 
wscript.echo command 
oShell.Run command, WindowStyle, WaitOnReturn 
Set oShell = Nothing 
+0

Hallo @ Peter, Vielen Dank für Ihre Hilfe werde ich versuchen, dies in die zu integrieren Code. –