Windows Batchfiles erstellen

  • Ich bin auf der Suche nach einem Tutorial oder Manual dass mir beibringen soll, wie man Windows Batchfiles schreibt. (eh nur so 0815 Aktionen wie Dateien verschieben/kopieren oder löschen)

    Hab schon bei Google&Co. gesucht, aber leider nichts ordentliches gefunden. :(

  • Hi!

    Ich weiss es hilft dir nichts, aber nur mal sone Frage:

    Was sind Batchfiles?? ;)
    Ich kenn nur "Batchrender" aus Maya, damit kann man viele Frames rendern, aber ansonsten...

    Bye,
    Tomas

  • http://www.labmice.net/scripting/default.htm scheint gute Texte zum Thema Batchprogrammierung unter Windows zu haben, ebenso http://www.onesmartclick.com/programming/batch-files.html. Hilfe zu den einfachen Kommandos findest du in der Eingabeaufforderung selbst (z.B. "move /?"). Ansonsten, use the google-force, Luke.


    Zitat von TomasBerger

    Was sind Batchfiles?? ;)

    Batchfiles findest du unter DOS und Windows. Sie entsprechen den Shellscripts unter Unix/Linux. Sie haben klassischerweise die Dateiendung ".bat" und bestehen ganz einfach aus Kommandos (z.B. copy, move oder del), die der Reihe nach abgearbeitet werden. Es gibt auch einfache Schleifen wie "for" und Verzweigungen wie "if". Außerdem sind "goto"-Anweisungen sehr beliebt. (Auch hier gibts per "for /?", "if /?", usw. Hilfe!)

    Unter Windows gibt es mit VBScripts und WSH-Files noch andere (mächtigere) Möglichkeiten, solch kleine Scripts zu schreiben.

  • thx für die tollen Links!

    Trotz alledem weiß ich jetzt leider noch nicht wie ich folgendes machen soll.

    Und zwar will ich alle Dateien, die im selben Verzeichnis mit der Batchdatei liegen (+ Unterverzeichnisse) mittels des Batchfiles in ein anderes Verzeichnis meiner Wahl kopieren (das Batchfile soll quasi "fragen" wo die Dateien hinkopiert werden sollen).

    Ich hoffe ihr könnts mir da rasch helfen.

    thanks, haj :)

  • Wenn du wirklich nur kopieren willst, reicht folgender Befehl:

    C:\From>xcopy *.* C:\To /s

    Die Option /e (statt /s) kopiert auch leere Unterverzeichnisse. Wenn das trotzdem in ein Batchfile hinein soll, sieht es so aus:

    echo off
    xcopy *.* %1 /s

    %1 ist dann der erste Parameter den man übergibt, soll heißen aufrufen würde man die Batchdatei so (ich nenn die Datei mal copier.bat)

    copier C:\To

    Diese Variante verlangt dass das Batchfile im selben Verzeichnis liegt (und wird vermutlich mitkopiert). Aber es ist ja kein Problem auch die Quelle als Parameter anzugeben ..

    Aber wie beefy schon sagte, bei größeren Vorhaben ist der WSH schon besser. (Versuch mal jemand in der cmd mit for-Schleifen und move ganze Verzeichnisbäume zu verschieben!!)

  • Zitat von Dave2003


    copier C:\To


    Ok, das ist ja schon mal sehr schön. Ich bräuchte das Batch-File aber in folgender Form:
    Ich starte copier (ohne den Parameter des Zielverzeichnisses) und erst dann fragt mich der Computer nach dem Zielverzeichnis und kopiert die Daten anschließend dort hin.

    Wie ließe sich denn das realisieren?

  • Zitat von Dave2003

    Afaik gibts keinen Befehl der einem zur Eingabe auffordert.


    Hmmm...das ist schlecht. :shinner:

    In dem Fall würde ich gerne wissen, mit welchem Befehl man aus einer Batchdatei heraus eine beliebige Datei starten kann (sagen wir z.B. demo.exe), die im selben Verzeichnis wie die Batchdatei liegt.

    please aw :) ,
    haj

  • Zitat von hajaj

    Hmmm...das ist schlecht. :shinner:

    In dem Fall würde ich gerne wissen, mit welchem Befehl man aus einer Batchdatei heraus eine beliebige Datei starten kann (sagen wir z.B. demo.exe), die im selben Verzeichnis wie die Batchdatei liegt.

    please aw :) ,
    haj

    Einfach den Namen der auszuführenden Datei hinschreiben und wenn die Datei nicht im selben Verzeichniss liegt den Pfad mit angeben.

  • Zitat von Dave2003


    echo off
    xcopy *.* %1 /s


    Ich will nun das Batchfile etwas erweitern. Und zwar soll jetzt gecheckt werden, ob überhaupt ein Parameter %1 übergeben wird.
    Ich dachte da intuitiv an folgende einfache Lösung:

    Code
    @echo off
    if %1="" goto error 
    xcopy *.* %1 /s
    :error
    echo.
    echo Fehler aufgetreten
    echo.
    pause



    Scheint aber leider nicht zu funktionieren, da ich beim aufrufen des Batchfiles immer die Fehlermeldung "goto" ist syntaktisch an dieser Stelle nicht verarbeitbar. bekomme.

    Ich hoffe Ihr wisst da Rat :) .

    lg hajaj

  • also ohne jetzt jemanden persönlich zu beleidigen ....
    .... ich finde es schon etwas *traurig*, dass jemand in diesem forum nicht
    weiß was batch-files sind! -> da hast du wirklich nachholbedarf ;)

    2. => if %1="" goto error
    geht natürlich nicht, weil stapelverarbeitungsdateien (->batch-files) nur sehr einfach "programmiert" werden können. -> eigentlich kann man nicht mal von programmieren sprechen weil im wesentlichen nur kommandozeilen-befehle eingegeben werden können!!

    also wenn du das ziel-verzeichnis als eingabe einlesen willst, gibt es nur folgende 2 (guten) möglichkeiten:
    1. du verwendest (wie es beefy schon sagte) vb-scripts -> dort kannst du relativ viel machen ODER
    2. (was ich tun würde) du schreibst ein ordentliches c/c++ programm und hast das problem in <15 minuten sauber gelöst ;)

    mfg marX

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!