Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Batchdatei wird nicht durchlaufen. Sofort Ende

Forumthread: Batchdatei wird nicht durchlaufen. Sofort Ende

Batchdatei wird nicht durchlaufen. Sofort Ende
07.06.2018 12:04:28
Jens
Hallo,
ich führe in excel eine Batch datei aus über VBA.
Die Batchdatei wird zwar geöffnet, aber die Prozedur läuft nicht durch.
Sprich die Batch Datei wird sehr schnell wieder geschlossen.
Vielleicht daher weil in Excel dann der Code mit End sub beendet wird.
Wenn ich die Batchdatei per hand ohne Excel ausführe. Läuft der Code super durch.
Hat jemand eine Anhung woran es liegt, dass es auch excel nicht funktioniert und die Batchdatei gleich wieder geschlossen wird?
Wie kann ich das Problem lösen?
Eine Wartezeit im VBA-Code bringt auch keine Erfolg.
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Batchdatei über VBA...
07.06.2018 13:01:51
Case
Hallo, :-)
... - probiere es mal so: ;-)
Option Explicit
Sub Main()
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "C:\Temp\PC_IP.bat", 0, True
MsgBox "Weiter"
Set WshShell = Nothing
End Sub
Servus
Case

Anzeige
AW: Batchdatei über VBA...
07.06.2018 13:27:30
Jens
Hallo nun wird die Batch datei garnicht geöffnet und es kommt das popup weiter?
Welchen Sinn soll das ganze nun haben?
Falls Dein...
07.06.2018 13:36:56
Case
Hallo, :-)
... Pfad Leerzeichen enthält, musst Du es in doppelte Anführungszeichen setzen. ;-)
Ansonsten habe ich es getestet und es läuft ohne Probleme durch. ;-)
Eventuell zeigst Du uns mal Deinen Code...
Servus
Case

Anzeige
AW: Falls Dein...
07.06.2018 13:52:03
Jens
Also ich führe damit nur die Batch datei aus.

Sub Batchdatei_aufrufen()
Dim Pfad As String
Dim ID
Pfad = ThisWorkbook.Path & "\" & "SL" & "\" & "ServerUP.bat"
'Batchdatei aufrufen
Shell Pfad, 1
'ID = Shell(Pfad, 1)
'MsgBox ID
End Sub
Dann wird die Batch datei geöffnet.
Hier wird ein externes FTP programm (WINSCP) geöffnet (das man aber nicht sieht) und dem Programm werden Dateien zum Upload übergeben.
Funktioniert auch super.
Jedoch aus excel heraus geht die batch-datei kurz auf und dann wieder zu.
Normal bleibt die für ca 1 Minute offen.
Anzeige
AW: Falls Dein...
07.06.2018 13:53:58
Jens
Also mit dem Code von dir geht die Batch datei garnicht mehr auf. Sondern es kommt sofort der Weiterbutton
Also - da es bei mir...
07.06.2018 14:37:25
Case
Hallo, :-)
... beides funktioniert fallen mir nur noch ein Hinweis und einige Links ein: ;-)
Problematisch kann sein, wenn die Batchdatei auf einem Netzlaufwerk liegt.
Batch 1...
Batch 2...
Batch 3...
Und wie gesagt - Leerzeichen im Pfad musst Du "maskieren".
WshShell.Run Chr(34) & "C:\T E  MP\PC_IP.bat" & Chr(34), 0, True
Ansonsten stell es nochmal auf "Offen" - vielleicht hat noch jemand anderes eine Idee.
Servus
Case

Anzeige
AW: Also - da es bei mir...
07.06.2018 14:42:45
Jens
was meinst du mit maskieren?
ich habe im Pfad keine Leerschritte
das waäre mein Pfad
D:\Desktop\Schnittliste
So habe ich ihn auch im VBA-Code angegeben.
Versuche mal die...
07.06.2018 15:13:33
Case
Hallo, :-)
... Batchdatei in einen Standardordner zu verschieben z. B. "Dokumente" auf C im Benutzerverzeichnis. Nur zum testen. Wenn das geht musst Du im VBA Code noch mit ChDrive auf das Laufwerk wechseln (also D:\) und mit ChDir das Verzeichnis (D:\Desktop\Schnittliste) angeben.
Servus
Case

Anzeige
AW: Versuche mal die...
07.06.2018 15:25:30
Jens
genau das selbe...
die Datei wird garnicht mehr geöffnet.
AW: Batchdatei wird nicht durchlaufen. Sofort Ende
07.06.2018 16:33:55
Zwenn
Hallo Jens,
der Ansatz von Case ist schon richtig. Ich hatte mal das gleiche Problem und konnte es durch das Starten des Programms über die Konsole innerhalb des Windows Scripting Host lösen. Ob diese Verschachtelung bei Dir auch funktioniert musst Du ausprobieren. Nur über den WSH ging es bei mir auch nicht.
Hier einmal mein Code mit meinen damaligen Kommentaren. Beides angepasst auf Dein Problem. Der entscheidende Kommentar (für mich damals) ist fett hervorgehoben:

Sub main()
Dim WshShell As Object  'Variable zur Aufnahme des Windows Scripting Host Objektes
Dim Pfad As String
'Setzen des Pfades zur Batch-Datei
Pfad = ThisWorkbook.Path & "\SL\ServerUP.bat"
'Bereitstellung des Windows Scripting Host
Set WshShell = CreateObject("Wscript.Shell")
'Ausführen der Batch-Datei auf der Windows Konsole
'(Achtung: Wenn der Pfad Umlaute, das ß oder andere Nicht-Dos Sonderzeichen enthält,
'müssen diese als DOS-Kompatibel gesetzt werden! [ASCII  ANSI])
'Der Parameter /c hinter cmd schließt die Konsole (cmd) nach Batch-Ende
'(Es gibt alternativ den Parameter /k, der die Konsole offen lässt.
'Achtung: Bei Mehrfachaufrufen bleibt das Makro mit /k stehen)
'Durch setzen des vorletzten Parameter auf 0, führt der Windows Scripting Host
'die Konsole unsichtbar aus (1 macht sie sichtbar)
'Durch setzen des letzten Parameter auf True, wartet das Makro, bis der Windows
'Scripting Host die Konsole wieder beendet hat (Achtung: Bei False würde das Makro
'weiterlaufen und nicht warten, bis der aktuelle Batch-Lauf berechnet wurde)
WshShell.Run "cmd /c & Pfad", 0, True
MsgBox "Weiter"
Set WshShell = Nothing
End Sub
Viele Grüße,
Zwenn
Anzeige
Noch ein Hinweis
07.06.2018 16:53:01
Zwenn
Hallo noch einmal
Verwendest Du in Deiner Batch Datei start /wait? Sonst wird die Batch Datei sofort beendet, wenn sie abgearbeitet wurde, obwohl das gestartete Programm noch läuft. Dann nutzt Dir auch der "WSH Trick" im Makro nix.
Hier hatte jemand das gleiche Problem:
http://www.askingbox.de/frage/batch-skript-programm-starten-und-warten-bis-es-beendet-ist
Viele Grüße,
Zwenn
Anzeige
;
Anzeige

Infobox / Tutorial

Batchdatei wird nicht durchlaufen – Lösungen und Tipps


Schritt-für-Schritt-Anleitung

Um eine Batchdatei über VBA in Excel korrekt auszuführen, kannst du die folgende Schritt-für-Schritt-Anleitung verwenden:

  1. Erstelle ein neues VBA-Modul:

    • Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke auf Einfügen und wähle Modul.
  2. Füge den folgenden Code ein:

    Option Explicit
    
    Sub Main()
       Dim WshShell As Object
       Set WshShell = CreateObject("WScript.Shell")
    
       ' Überprüfe den Pfad zur Batchdatei und setze ihn in Anführungszeichen bei Leerzeichen
       WshShell.Run "cmd /c ""C:\Temp\PC_IP.bat""", 0, True
    
       MsgBox "Batchdatei wurde ausgeführt."
       Set WshShell = Nothing
    End Sub
  3. Anpassen des Pfades:

    • Achte darauf, dass der Pfad zur Batchdatei korrekt angegeben ist. Wenn der Pfad Leerzeichen enthält, musst du ihn in doppelte Anführungszeichen setzen.
  4. Führe das Makro aus:

    • Gehe zurück zu Excel, drücke ALT + F8, wähle Main aus und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Batchdatei wird sofort beendet:

    • Stelle sicher, dass du den Parameter /c in deinem cmd-Befehl verwendest. Alternativ kannst du /k verwenden, wenn du die Konsole offen halten möchtest, aber sei vorsichtig, da dies das Makro anhalten kann.
  • Batchdatei öffnet sich nicht:

    • Prüfe, ob der Pfad zur Batchdatei korrekt ist. Bei Pfaden mit Umlauten oder Sonderzeichen, benutze die batch sonderzeichen maskieren Methode und konvertiere sie in ASCII.
  • Leere Meldung nach Ausführung:

    • Wenn du eine MsgBox erhältst, bevor die Batchdatei ausgeführt wird, könnte ein Fehler im Pfad oder in der Batchdatei selbst vorliegen.

Alternative Methoden

  • Verwende Shell statt WshShell:

    Shell "C:\Temp\PC_IP.bat", vbNormalFocus

    Hierbei wird die Batchdatei in einem normalen Fenster ausgeführt. Beachte, dass dies möglicherweise das Problem mit dem sofortigen Schließen nicht löst.

  • Batchdatei in einen Standardordner verschieben: Verschiebe die Batchdatei in einen einfachen Ordner, z.B. C:\Dokumente, um Pfadprobleme zu vermeiden.


Praktische Beispiele

  • Batchdateien verschieben: Wenn du mehrere Batchdateien verwalten musst, kannst du ein Skript erstellen, um diese in einen zentralen Ordner zu verschieben:

    @echo off
    move "D:\alte_batch\*.bat" "C:\neue_batch\"
  • Verwendung von Winscp in einer Batchdatei: Hier ein einfaches Beispiel, wie du Winscp in einer Batchdatei verwenden kannst:

    @echo off
    winscp.com /command "
      open sftp://username:password@host.com
      put D:\local\file.txt /remote/path/
      exit"

Tipps für Profis

  • Batchdatei Kommentar: Nutze Kommentare in deiner Batchdatei (REM), um wichtige Schritte zu dokumentieren, was die Wartung erleichtert.

  • Überwachung des Batch-Status: Füge am Ende deiner Batchdatei einen Statuscode hinzu, um zu überprüfen, ob alles erfolgreich ausgeführt wurde:

    if %errorlevel% neq 0 (
      echo Fehler aufgetreten!
    )
  • Batch Programm beenden: Verwende exit am Ende deiner Batchdatei, um sicherzustellen, dass sie korrekt geschlossen wird.


FAQ: Häufige Fragen

1. Wie kann ich eine Batchdatei beenden? Du kannst das exit-Kommando am Ende deiner Batchdatei verwenden, um sie sauber zu schließen.

2. Was ist zu tun, wenn Umlaute in Batch-Menüs nicht angezeigt werden? Stelle sicher, dass du die Zeichenkodierung deiner Batchdatei auf UTF-8 ohne BOM setzt, um Probleme mit Umlauten zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige