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, 3711 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
gelöst Dateinamen mit Batch-Datei ändern - Problem (9)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Batch & Shell
gelöst Teile eines Dateinamens ändern mit Batch Datei (4)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Batch & Shell
gelöst Bestimmte Daten aus CSV per Windows BATCH Datei in .txt Format schreiben lassen. (9)

Frage von freshman2017 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
Windows Server
gelöst Exchange HyperV Prozessorlast (19)

Frage von theoberlin zum Thema Windows Server ...

Hardware
16-20 Port POE Switch mit VLAN (19)

Frage von thomasreischer zum Thema Hardware ...

Windows Server
Server mit Netzwerkaussetzern (17)

Frage von SarekHL zum Thema Windows Server ...

LAN, WAN, Wireless
gelöst Batchdatei um einen Proxy einzustellen (14)

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