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, 3854 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst In einer Batch variable die Datei extension ermitteln ? (4)

Frage von Kriegstreiber zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von 126594 zum Thema Batch & Shell ...

PHP
gelöst HTML Dropdownmenü auslesen und in PHP als Variable übergeben (35)

Frage von ITFlori zum Thema PHP ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
CNC Maschinen verlieren Netzwerkverbindung (kurioser Fehler) (21)

Frage von NoHopeNoFear zum Thema LAN, WAN, Wireless ...

Drucker und Scanner
Erfahrungen mit Enterprise-Tintenstrahldruckern A4 und A3 (11)

Frage von User1000 zum Thema Drucker und Scanner ...