Wie Argumente übergeben werden (kein command line arguments), um Funktionen innerhalb des batch-scripts

Schreibe ich eine batch Datei für die Automatisierung der Erstellung von typischen Ordner-Strukturen für Produkte, die wir verkaufen. Ich möchte in der Lage sein, rufe meine batch-Datei mit 2 optionalen Argumente; den Namen des Lieferanten und eine Datei für die Erstellung viele Ordner auf einmal. Wenn kein Anbieter geliefert wird das Skript fragt über den standard-input, wer der Lieferant ist. Wenn keine Datei angegeben ist, das Skript fragt nach dem Namen des Ordners, den Sie erstellen möchten. Wenn eine Datei ist als argument übergeben, möchte ich das Skript zum Lesen der Datei zeilenweise und erstellen Sie einen Ordner für jede Zeile, benannt nach dem Inhalt der Zeile. Hier ist die :readFile Funktion:

:readFile
    echo "Reading from file: %theFile%"
    FOR /F "delims=," %%a IN (%theFile%) do (
        call:makeFolder %%a
    )
    goto:EOF

Hier ist die :makeFolder - Funktion, die Optional nimmt das argument der name des Ordners zu erstellen. Wenn kein argument angegeben wird, es fragt nach dem Namen, über standard-Eingabe.

:makeFolder  
    if [%1]==[] (
        set /p product="Enter product name: "
    ) else (
        set product=%1
    )
    if exist "P:\%supplier%\Products\%product%" (
        echo.
        echo The folder '%product%' already exists.
        echo.
        goto:EOF
    )
    mkdir "P:\%supplier%\Products\%product%\Images\Web Ready"
    mkdir "P:\%supplier%\Products\%product%\Images\Supplied"
    mkdir "P:\%supplier%\Products\%product%\Images\Edited"
    goto:EOF

Mein problem ist, dass in der :makeFolder Funktion %1 bezieht sich auf das 1. argument in der Befehlszeile angegeben wird, nicht in der :readFile Funktion. Wie kann ich das erreichen? Caveat: ich bin sehr neue batch-scripting, so dass Sie haben können, um mit mir zu sprechen, wie ich bin ein bisschen dumm.

%1 ist das erste argument, wenn man den ersten parameter aus der Kommandozeile, ist es möglich, dass ein "exit /b' Day fehlt, nach Ihrem Haupt-code
Dies sollte eine Antwort sein, meiner Meinung nach. Ich begreife, dass es ist eine Vermutung, aber es ist eine wahrscheinliche Vermutung. Und auch wenn es sich falsch in der OP der Fall, sollte es noch da sein als möglich beantworten, für andere Menschen (diejenigen, die kommen können, über diese Frage) zu betrachten.
Tut mir Leid, ich verstehe nicht, was ist exit /b'day? Ich verstehe, dass $1 ist der erste parameter von der Kommandozeile aus, aber wie ich es verstehe, verwenden Sie ebenfalls $1, wenn in Bezug auf das erste argument einer Funktion. Meine Frage ist, was kann ich tun, um Zugriff auf das erste argument übergeben :makeFolder ohne Bezug auf die 1. Kommandozeilen-argument?
%1 ist der erste parameter auf der Kommandozeile nur in den Haupt-Teil der batch-Datei. Innerhalb einer Funktion %1 bedeutet, dass der erste parameter der Funktion. Innerhalb einer Funktion haben Sie keinen direkten Zugriff auf die Parameter der Kommandozeile.
Ich glaube, Sie sind falsch mit Ihrem problem Beschreibung. Ich schlage vor, Sie legen eine echo Parameter for makeFolder: %%a vor dem Aufruf von es und ein echo Parameter received %1 in der ersten Zeile der makeFolder. Dies kann Ihnen helfen, zu sehen, was passiert.

InformationsquelleAutor MrMisterMan | 2011-10-24

Schreibe einen Kommentar