Suche VB.Net4 Code-Alternative zu einem bestimmten Batchscript...
#1
geschrieben 29. Mai 2012 - 18:28
Bisher benutze ich einen kleinen und simplen Batchscript um bestimmte Programme so zu starten, dass sie statt im Systemordner "AppData" in ihrem eigenen Programmordner arbeiten/speichern...
Der Batchscript sie wie folgt aus:
set appdata=%cd%
anwendung.exe
Nun versuche ich aber, die gleiche Funktionsweise ("Ohne externe .Bat Datei) über einen Button in einer von mir geschriebenen VB.Net Anwendung auszuführen. Dies gelingt leider überhaupt nicht, da es dort anscheinend nicht wirklich möglich ist, mehrzeilige Batchbefehle auszuführen...meine Googlesuche zu diesem Thema ergab zwar dutzende Treffer, die aber letztendlich alle darauf hinaus liefen, dass man einfach bei den üblichen batchdateien bleiben soll...was für mich aber keine Option ist, da die Funktionsweise die ich suche, eigentlich in VB.NET umsetzbar sein dürfte.
Darum meine Frage, gibt es eine einfache Möglichkeit in VB.net eine externe Anwendung (gleiches Verzeichniss wie VB.Net-Anwendung) so zu starten, dass sie statt standartmäßig in AppData in ihrem eigenen Verzeichniss arbeitet/speichert?
Gruß, DeX
- CPU: AMD Phenom II X4 965 (3.400Mhz; Deneb; 45nm)
- MB: Gigabyte GA-790XTA-UD4 (AM3; SB750; Bios = F3; 2x USB3)
- RAM: 2x 2048MB G.Skill DDR3-10600 (1333Mhz; CL9; Dualchannel; Unganged)
- Grafik: PowerColor ATI 5770 PCS+ (1024MB GDDR5; PCI-E 2.0 16x; Catalyst 11.5)
- Display: Acer H233H HEbmid (23" TFT; 16:9; 1080p@60Hz; 2MS; HDMI)
- Display²: Samsung SyncMaster 2253BW (22" TFT; 16:10; 1050p@60Hz; 2MS; DVI-D)
- Sound: Creative X-Fi Xtreem Music + Fatality-I/O-Panel
- Gehäuse: Thermaltake Swing JR VB6000BWS
- Kühlung: CPU = CoolIt ECO A.L.C. ; Gehäuse = 2x Arctic-Cooling F12 PWM
Anzeige
#2
geschrieben 29. Mai 2012 - 20:35
Nur weiß ich grad nicht welche das bei VB waren...
&&
;
|
oder ähnlich meine ich...
Dieser Beitrag wurde von Stefan_der_held bearbeitet: 29. Mai 2012 - 20:36
#3
geschrieben 30. Mai 2012 - 10:18
- CPU: AMD Phenom II X4 965 (3.400Mhz; Deneb; 45nm)
- MB: Gigabyte GA-790XTA-UD4 (AM3; SB750; Bios = F3; 2x USB3)
- RAM: 2x 2048MB G.Skill DDR3-10600 (1333Mhz; CL9; Dualchannel; Unganged)
- Grafik: PowerColor ATI 5770 PCS+ (1024MB GDDR5; PCI-E 2.0 16x; Catalyst 11.5)
- Display: Acer H233H HEbmid (23" TFT; 16:9; 1080p@60Hz; 2MS; HDMI)
- Display²: Samsung SyncMaster 2253BW (22" TFT; 16:10; 1050p@60Hz; 2MS; DVI-D)
- Sound: Creative X-Fi Xtreem Music + Fatality-I/O-Panel
- Gehäuse: Thermaltake Swing JR VB6000BWS
- Kühlung: CPU = CoolIt ECO A.L.C. ; Gehäuse = 2x Arctic-Cooling F12 PWM
#4
geschrieben 30. Mai 2012 - 13:03
Dieser Code funktioniert schonmal und startet die Anwendung...:
Sub Button1Click(sender As Object, e As EventArgs)
Shell("cmd /c " & Chr(34) & "Anwendung.exe" & Chr(34))
End Sub
Allerdings funktioniert folgendes nicht...:
Sub Button1Click(sender As Object, e As EventArgs)
Shell("cmd /c " & Chr(34) & "set appdata=%cd%" & "Anwendung.exe" & Chr(34))
End Sub
Wenn ich && benutze kommt die Fehlermeldung dass ein Ausdruck erwartet wird, und bei ; und | kommt die Meldung von wegen ungültiges Zeichen
- CPU: AMD Phenom II X4 965 (3.400Mhz; Deneb; 45nm)
- MB: Gigabyte GA-790XTA-UD4 (AM3; SB750; Bios = F3; 2x USB3)
- RAM: 2x 2048MB G.Skill DDR3-10600 (1333Mhz; CL9; Dualchannel; Unganged)
- Grafik: PowerColor ATI 5770 PCS+ (1024MB GDDR5; PCI-E 2.0 16x; Catalyst 11.5)
- Display: Acer H233H HEbmid (23" TFT; 16:9; 1080p@60Hz; 2MS; HDMI)
- Display²: Samsung SyncMaster 2253BW (22" TFT; 16:10; 1050p@60Hz; 2MS; DVI-D)
- Sound: Creative X-Fi Xtreem Music + Fatality-I/O-Panel
- Gehäuse: Thermaltake Swing JR VB6000BWS
- Kühlung: CPU = CoolIt ECO A.L.C. ; Gehäuse = 2x Arctic-Cooling F12 PWM
#5
geschrieben 30. Mai 2012 - 13:32
cmd /c "set appdata=%cd%Anwendung.exe"als auszuführende Anweisung und das geht erwartungsgemäß mörderschief.
Tipp: versuche zuerst, das ganze in einer einzeiligen Batch hinzubekommen. Müsste aussehen wie
cmd /c set appdata=%cd% & Anwendung.exeund danach setzt du das mal mit VB um. Ich tippe einfach mal auf
Shel("cmd /c set appdata=%cd% & Anwendung.exe")
Du musst hier einfach unterscheiden, ob du in VB verkettest, oder in der Konsole, die du aufrufst. In VB verketten würde ich in deinem Fall übrigens nicht, weil das warscheinlich 0,nix bringen wird, weil die Variable nur in der jeweiligen Konsolensitzung gesetzt wird. Du hast es also genau richtig gemacht, eine Konsole aufzurufen und ihr die beiden Befehle zu übergeben.
Dieser Beitrag wurde von Kirill bearbeitet: 30. Mai 2012 - 13:37
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
#6
geschrieben 30. Mai 2012 - 13:37
Shell("cmd /c set appdata=%cd% & Anwendung.exe") hat funktioniert, unglaublich dass alle bei den Sachen die ich bisher bei Google gefunden habe, gemeint haben, das das nicht möglich wäre
DankeDankeDanke!
Interessant ist hier, dass er diesmal auch nicht meckert, dass zwischen set und appdata ein Leerzeichen ist, das war nämlich das Hauptproblem welches ich beim rumprobieren mit dem Code hatte...
Bin eben noch sehr neu in VB.Net Programmierung und bin froh dass ich bisher einige Simple, dafür aber funktionstüchtige Anwendungen hinbekommen habe...man hat da echt unendliche Möglichkeiten, aber eben auch eine unendliche Komplexität, wenn man sich mit der Materie nicht wirklich auskennt...so wie ich
Dieser Beitrag wurde von DeX bearbeitet: 30. Mai 2012 - 13:42
- CPU: AMD Phenom II X4 965 (3.400Mhz; Deneb; 45nm)
- MB: Gigabyte GA-790XTA-UD4 (AM3; SB750; Bios = F3; 2x USB3)
- RAM: 2x 2048MB G.Skill DDR3-10600 (1333Mhz; CL9; Dualchannel; Unganged)
- Grafik: PowerColor ATI 5770 PCS+ (1024MB GDDR5; PCI-E 2.0 16x; Catalyst 11.5)
- Display: Acer H233H HEbmid (23" TFT; 16:9; 1080p@60Hz; 2MS; HDMI)
- Display²: Samsung SyncMaster 2253BW (22" TFT; 16:10; 1050p@60Hz; 2MS; DVI-D)
- Sound: Creative X-Fi Xtreem Music + Fatality-I/O-Panel
- Gehäuse: Thermaltake Swing JR VB6000BWS
- Kühlung: CPU = CoolIt ECO A.L.C. ; Gehäuse = 2x Arctic-Cooling F12 PWM
#7
geschrieben 30. Mai 2012 - 14:13
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
#8
geschrieben 30. Mai 2012 - 14:18
Wenn ich damit fertig bin und evtl. das Ok von den Entwicklern der externen Exe bekomme, kann ich ja mal einen Thread für mein kleines Tool aufmachen^^
Das sollte für SEHR viele Leute sehr nützlich sein
- CPU: AMD Phenom II X4 965 (3.400Mhz; Deneb; 45nm)
- MB: Gigabyte GA-790XTA-UD4 (AM3; SB750; Bios = F3; 2x USB3)
- RAM: 2x 2048MB G.Skill DDR3-10600 (1333Mhz; CL9; Dualchannel; Unganged)
- Grafik: PowerColor ATI 5770 PCS+ (1024MB GDDR5; PCI-E 2.0 16x; Catalyst 11.5)
- Display: Acer H233H HEbmid (23" TFT; 16:9; 1080p@60Hz; 2MS; HDMI)
- Display²: Samsung SyncMaster 2253BW (22" TFT; 16:10; 1050p@60Hz; 2MS; DVI-D)
- Sound: Creative X-Fi Xtreem Music + Fatality-I/O-Panel
- Gehäuse: Thermaltake Swing JR VB6000BWS
- Kühlung: CPU = CoolIt ECO A.L.C. ; Gehäuse = 2x Arctic-Cooling F12 PWM
#9
geschrieben 30. Mai 2012 - 15:47
Fehlt in dem Shell-Befehlt vllt. noch ein Parameter dafür?
Gruß
Dieser Beitrag wurde von DeX bearbeitet: 30. Mai 2012 - 15:56
- CPU: AMD Phenom II X4 965 (3.400Mhz; Deneb; 45nm)
- MB: Gigabyte GA-790XTA-UD4 (AM3; SB750; Bios = F3; 2x USB3)
- RAM: 2x 2048MB G.Skill DDR3-10600 (1333Mhz; CL9; Dualchannel; Unganged)
- Grafik: PowerColor ATI 5770 PCS+ (1024MB GDDR5; PCI-E 2.0 16x; Catalyst 11.5)
- Display: Acer H233H HEbmid (23" TFT; 16:9; 1080p@60Hz; 2MS; HDMI)
- Display²: Samsung SyncMaster 2253BW (22" TFT; 16:10; 1050p@60Hz; 2MS; DVI-D)
- Sound: Creative X-Fi Xtreem Music + Fatality-I/O-Panel
- Gehäuse: Thermaltake Swing JR VB6000BWS
- Kühlung: CPU = CoolIt ECO A.L.C. ; Gehäuse = 2x Arctic-Cooling F12 PWM
#10
geschrieben 30. Mai 2012 - 16:00
DiskCache=AllocateMemory(GetTotalAmountOfAvailableMemory);}
#11
geschrieben 30. Mai 2012 - 16:08
- CPU: AMD Phenom II X4 965 (3.400Mhz; Deneb; 45nm)
- MB: Gigabyte GA-790XTA-UD4 (AM3; SB750; Bios = F3; 2x USB3)
- RAM: 2x 2048MB G.Skill DDR3-10600 (1333Mhz; CL9; Dualchannel; Unganged)
- Grafik: PowerColor ATI 5770 PCS+ (1024MB GDDR5; PCI-E 2.0 16x; Catalyst 11.5)
- Display: Acer H233H HEbmid (23" TFT; 16:9; 1080p@60Hz; 2MS; HDMI)
- Display²: Samsung SyncMaster 2253BW (22" TFT; 16:10; 1050p@60Hz; 2MS; DVI-D)
- Sound: Creative X-Fi Xtreem Music + Fatality-I/O-Panel
- Gehäuse: Thermaltake Swing JR VB6000BWS
- Kühlung: CPU = CoolIt ECO A.L.C. ; Gehäuse = 2x Arctic-Cooling F12 PWM
#12
geschrieben 30. Mai 2012 - 19:01
Wenn ich eine .bat datei erstelle und dort ...
set appdata=%cd% & Anwendung.exe
... eingebe, passiert das gleiche wie bei meinem Launcher...die Anwendung startet, erstellt einen leeren Ordner für seine arbeitsdateien, hat aber dann anschließend keine Zugriffsrechte mehr darauf -> Fehlermeldung.
Wenn ich das &-zeichen wieder wegnehme und die beiden Befehle untereinander schreibe funktioniert die .bat aber plötzlich wieder...aaaaarg, wo ist der FEHLER?
Also ist das exakt das gleiche Problem, was meine VB.Net Anwendung beim Ausführen dieses Befehls hat -,-
Shell("cmd /c set appdata=%cd% & Anwendung.exe")
EDIT:
OMG Es lag an den Leerzeichen
Das funktioniert:
Shell("cmd /c set appdata=%cd%&Anwendung.exe")
Dieser Beitrag wurde von DeX bearbeitet: 30. Mai 2012 - 19:34
- CPU: AMD Phenom II X4 965 (3.400Mhz; Deneb; 45nm)
- MB: Gigabyte GA-790XTA-UD4 (AM3; SB750; Bios = F3; 2x USB3)
- RAM: 2x 2048MB G.Skill DDR3-10600 (1333Mhz; CL9; Dualchannel; Unganged)
- Grafik: PowerColor ATI 5770 PCS+ (1024MB GDDR5; PCI-E 2.0 16x; Catalyst 11.5)
- Display: Acer H233H HEbmid (23" TFT; 16:9; 1080p@60Hz; 2MS; HDMI)
- Display²: Samsung SyncMaster 2253BW (22" TFT; 16:10; 1050p@60Hz; 2MS; DVI-D)
- Sound: Creative X-Fi Xtreem Music + Fatality-I/O-Panel
- Gehäuse: Thermaltake Swing JR VB6000BWS
- Kühlung: CPU = CoolIt ECO A.L.C. ; Gehäuse = 2x Arctic-Cooling F12 PWM