Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Variable an Batch-Datei übergeben

Frage Entwicklung Batch & Shell

Mitglied: MarcoBorn

MarcoBorn (Level 1) - Jetzt verbinden

04.07.2013, aktualisiert 11.07.2013, 3587 Aufrufe, 9 Kommentare

Hallo Forum,
ich muss in einem VB.NET-Skript eine Batch-Datei aufrufen. Das Batch-File benötigt jedoch eine Variable, die erst im Laufe des .NET-Skripts mit einem Wert belegt wird. Wie kann ich diese Variable an die Batch-Datei übergeben?

Vielen Dank,
M. Born
Mitglied: colinardo
04.07.2013, aktualisiert um 08:53 Uhr
Hallo M. Born,
die Variable als Kommandozeilen-Parameter beim Aufruf der Batch übergeben, und dann in der Batch mit %1 darauf zugreifen.

Grüße Uwe
Bitte warten ..
Mitglied: MarcoBorn
04.07.2013 um 08:58 Uhr
Hallo Uwe,
wie übergebe ich den Parameter? Einfach mit einem Blank dazwischen oder mit Backslash? Könntest Du mir eine kurze Beispiel-Codezeile schreiben? Ich bin mit Batch-Dateien kaum bewandert.

Vielen Dank,
Marco
Bitte warten ..
Mitglied: colinardo
04.07.2013, aktualisiert um 09:07 Uhr
ja einfach ein Leerzeichen zwischen Batch und Parameter. Wenn der Parameter ein Leerzeichen enthält in Anführungszeichen einschließen.
01.
deineBatch.cmd "Parameter1" "Parameter2"
In der Batchdatei greifst du dann auf die Parameter mit %1 für Parameter1, %2 für Parameter2 , usw. zu.
Bitte warten ..
Mitglied: MarcoBorn
04.07.2013 um 09:20 Uhr
Vielen Dank.
Bitte warten ..
Mitglied: MarcoBorn
11.07.2013 um 09:57 Uhr
Hallo Forum,
nach ein paar Tagen Pause konnte ich mich jetzt wieder dem Problem widmen. Ich habe in VB folgenden Aufruf:

version_nr = Assembly.GetExecutingAssembly.GetName.Version.ToString
errorlvl = Shell("C:\Users\Born\Documents\SharpDevelop Projects\tools\Verpatch\mbo_start.bat " & version_nr)
MsgBox(errorlvl)

Rufe ich die Batch-Datei manuell auf, läuft das Skript sauber durch und ich erhalte errorlvl=0 zurück. Starte ich die Batch jedoch über den oben genannten Code erhalte ich immer errorlvl-Werte <>0, die auf einen Fehler hinweisen und auch das Ergebnis der Batch ist nicht korrekt. Die Batch selbst sieht wie folgt aus:

set _v=%1
verpatch.exe fkgendna-packed.xll /va %1 /s desc "FKGenDNA" /s copyright "(C) 2004-2013, DOK" /pv %1
@echo Errorlevel=%errorlevel%


Was mache ich hier falsch?
Bitte warten ..
Mitglied: Biber
11.07.2013 um 10:16 Uhr
Moin MarcoBorn,

vermutlich wird beim Aufruf über Bande die Batchdatei aus einem anderen Laufwerk/Pfad gerufen.
Beim manuellen Aufruf der Batchdatei, der wahrscheinlich aus dem Verzeichnis "C:\Users\....\Verpatch\" erfolgt, wird in ebendiesem Verzeichnis auch die "verpatch.exe" gesucht und gefunden - bei einem Aufruf über VB auch dem Verzeichnis "X:\Y" wird diese Verpatch im Verzeichnis "X:\Y" gesucht und nicht gefunden.

-> Gib am besten der Verpatch.exe in der Batchdatei den vollständigen Pfad mit.

Oder lass die Batch-Hülle weg und rufe die Verpatch.exe aus VB direkt auf.

Grüße
Biber
Bitte warten ..
Mitglied: MarcoBorn
11.07.2013 um 10:31 Uhr
Hallo Biber,
das mit den Paden habe auch schon probiert; ich hatte sie hier weggelassen, weil sie so viel Platz wegnehmen. Den Aufruf der Exe direkt aus VB mit Hilfe des folgenden Befehls scheitert leider ebenfalls:

version_nr = Assembly.GetExecutingAssembly.GetName.Version.ToString
errorlvl = Shell("C:\Users\Born\Documents\SharpDevelop Projects\tools\Verpatch\verpatch.exe C:\Users\Born\Documents\SharpDevelop Projects\tools\Verpatch\fkgendna-packed.xll /va version_nr /s desc ""FKGenDNA"" /s copyright ""(C) 2004-2013, DOK"" /pv version_nr " & version_nr)
MsgBox(errorlvl)

Was mache ich nur verkehrt?
Bitte warten ..
Mitglied: colinardo
11.07.2013, aktualisiert um 11:22 Uhr
Zitat von MarcoBorn:
Was mache ich nur verkehrt?
Hallo MarcoBorn,
Der Shell Befehl in VB gibt nicht einen Fehlerwert zurück sondern die Task-ID des gestarteten Prozesses als Variant(Double).
Wenn du den Errorlevel des ausgeführten Befehls erhalten möchtest kannst du das so machen:
01.
Set WshShell = CreateObject("Wscript.Shell") 
02.
errorlvl = wshshell.Run ("""C:\Users\Born\Documents\SharpDevelop Projects\tools\Verpatch\verpatch.exe"" ""C:\Users\Born\Documents\SharpDevelop Projects\tools\Verpatch\fkgendna-packed.xll"" /va version_nr /s desc ""FKGenDNA"" /s copyright ""(C) 2004-2013, DOK"" /pv version_nr " & version_nr, 0, true) 
03.
MsgBox(errorlvl)
oder mit dem Exec-Object der WSHSHELL:
01.
Set WshShell = CreateObject("Wscript.Shell") 
02.
set oExec = wshshell.Exec ("""C:\Users\Born\Documents\SharpDevelop Projects\tools\Verpatch\verpatch.exe"" ""C:\Users\Born\Documents\SharpDevelop Projects\tools\Verpatch\fkgendna-packed.xll"" /va version_nr /s desc ""FKGenDNA"" /s copyright ""(C) 2004-2013, DOK"" /pv version_nr " & version_nr) 
03.
Do While oExec.Status = 0 
04.
     DoEvents 
05.
Loop 
06.
msgbox (oExec.ExitCode)
Grüße Uwe
Bitte warten ..
Mitglied: MarcoBorn
11.07.2013 um 11:20 Uhr
Hallo Uwe,
das war der entscheidende Tipp. Ich musste zwar den Code etwas umbauen, aber jetzt läuft es. Der Code muss lauten:

errorlvl = wshshell.Run ("""C:\Users\Born\Documents\SharpDevelop Projects\tools\Verpatch\verpatch.exe"" ""C:\Users\Born\Documents\SharpDevelop Projects\tools\Verpatch\fkgendna-packed.xll"" /va " & version_nr & " /s desc ""FKGenDNA"" /s copyright ""(C) 2004-2013, DOK"" & " /pv " & version_nr, 0, True)

Vielen Dank an alle, die mir geholfen haben,
Marco
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
RODC über VPN - Verbindung weg (10)

Frage von stefan2k1 zum Thema Windows Server ...