batch führt alle *.* dateinen des aktuellen verzeichnisses aus

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • batch führt alle *.* dateinen des aktuellen verzeichnisses aus

    Guten Tag zusammen; ich bin grad neu hier und hoffe, dass ihr mir helfen könnt.
    Folgendes Problem: Ich pröble derzeit daran, ein batch Programm zu erstellen, welches zuerst in eine andere noch nicht existierende .bat datei etwas hineinschreibt (ein befehl) und dann alle .bat dateien des aktuellen ortners startet. Mein Problem ist simpel... Ich kriegs einfach nicht hin. Irgend etwas will einfach nie funktionieren. Eigentlich ist es ja einfach... eine ganz normale for schleife mit etwas zusatz; nur wird die erstellte .bat nie ausgeführt sondern immer nur erstellt... somit wird auch das, was in der erstellten .bat steht nie ausgegeben. Ich habe schon mehr als 6h gegoogelt und nichts gefunden...kann mir jemand sagen wo der fehler ist?
    Mein Program:

    echo copy NUL %random%.txt > %random%.bat <- in eine .bat mit zufälligem namen schreiben

    For /F %%i in ('dir /B *.bat') do start <- alle .bat des aktuellen verzeichnisses öffnen

    pause

    Ende des Programms
  • SJay96 wrote:


    nur wird die erstellte .bat nie ausgeführt sondern immer nur erstellt

    Das könnte daran liegen, dass du an start keine Parameter übergibst. Außerdem ruft die for-Schleife alle *.bat-Dateien im aktuellen Verzeichnis auf, also auch dein Programm, das somit die Schleife nochmal ausführt - das dürfte eine Endlosschleife sein. Schau mal, ob dir das weiterhilft:

    Source Code

    1. @echo off
    2. echo copy NUL %random%.txt > test\%random%.bat
    3. for /F %%i in ('dir /B test\*.bat') do start test\%%i

    Thomas
  • Antwort von Thomas

    Hat leider nicht funktioniert... Fehlermeldung, Datei wird nicht gefunden. Vielleicht kann ich ja irgendwie dem Wert %random% eine Variable zuweisen und die dann als Dateinamen angeben? Oder an was könnte es sonst noch liegen?
    Das mit der endlosschleife ist kein problem. Da hab ich bereits meine Ideen, wie ich dies verhindern kann. Danke schonmal für die Antwort ;)
  • Hmmmm... ja ich hab auf dem desktop einenordner test erstellt und darin die batch. Jedoch kann es mir die datei nicht finden... muss ich den testordner irgendwo bestimmt erstellen? Das dir in der klammer wechselt doch ins lokale verzeichnis und daher wär doch eine verzeichnisangabe nicht nötig? Danke schonmal für die antworten Thomas
  • Problem gelöst

    programm funktioniert nun einwandfrei. Danke Thomas
    Problemteil:
    @echo off
    echo copy NUL %random%.txt > test\%random%.bat
    for /F %%i in ('dir /B test\*.bat') do start test\%%i

    pause
    Ende des Programms

    Was auch noch eine Variante gewesen wär, bei den "test\" die einzellnen Pfade angeben. Dann funktioniert es auch. In dem obigen Teil wird ein textdokument in den selben ordner erstellt, in dem das programm sich befindet und in einem unterordner test, welchen man selber erstellen muss, wird die batch erstellt, in welcher dann der befehl für das erstellen des .txt files steht. Dies als ergänzung, fals es jemanden interessiert.
    Nochmal danke an Thomas für die schnellen und verständlichen antworten
  • Schönheitsfehler

    hab noch einen Schönheitsfehler entdeckt... Wie könnte ich nun machen, dass mir das copy NUL nicht in der cmd zurückgegeben wird? Dass sozusagen nur das txt erstellt wird und die konsole gar nicht geöffnet wird, ausser für das abwarten des tastendrucks
    Vielen Dank