2017-04-17 4 views
0

Ich möchte eine Batchdatei haben, wo ich einen Pfad wie C: \ Benutzer \ Munch \ Desktop \ All Files \ angeben und dann wird es einen Ordner innerhalb des angegebenen Verzeichnisses erstellen.Stapel erstellen Ordner im Eingabeverzeichnis

Momentan erstellt es nur Ordner auf meinem Desktop mit dem Namen Im in der Eingabe bereitstellen. Geben Sie zum Beispiel, wenn in meinem Input "All Files \ Development" wird es, auf meinem Desktop, erstellen Sie zwei Ordner mit dem Namen "Alle" und "Dateien"

@echo off 
color 0C 

:main 
cls 
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
set /p dir=Enter directory: 
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
goto create 
pause 

:create 

md "C:\Users\Munch\Desktop\%dir%\new" 
pause 

Wenn ich meine md Linie

md "\%dir%\new" 
zu

ändern

und dann in meinem Batch-Eingang eingeben "C: \ Users \ Munch \ Desktop \ Alle Dateien" es tut immer noch das gleiche.

Jede Hilfe wäre großartig!

+0

Die erste Variante funktionierte gut für mich. Versuchen Sie '@echo on' vor' md' hinzuzufügen und prüfen Sie, wie die Zeile mit 'md' nach der Variablensubstitution aussieht. –

+1

Ein Pfad, der mit einem Backslash am Anfang beginnt, ist relativ zum Stamm des aktuellen Laufwerks.Sie können dies sehen, indem Sie ein Eingabeaufforderungsfenster öffnen und 'dir/A \ *' ausführen, und Sie sehen alle Dateien und Verzeichnisse im Stamm des aktuellen Laufwerks unabhängig davon, welches Unterverzeichnis das aktuelle Verzeichnis ist. – Mofi

Antwort

0

Ihr Problem ist, dass Ihr Pfad für den md/mkdir Befehl als "Root-relative" angegeben ist - das heißt, Sie haben entweder die Laufwerksspezifikation oder einen umgekehrten Schrägstrich als erstes Zeichen des Pfades.

Stattdessen versuchen, dass das Weglassen und

@echo off 
color 0C 

:main 
cls 
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
set /p dir=Enter directory: 
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
goto create 
pause 

:create 

md "%dir%\new" 
pause 

ohne die führenden \ oder C:\... verwenden.

Der Nachteil dabei ist, dass, wenn Sie nicht über einen vollständigen Pfad (beginnend mit \ oder dem Stamm eines Laufwerk [C:\]) liefern, wird das neue Verzeichnis in dem relativen Pfad angelegt werden - das heißt, wenn Sie‘ re in C:\FOO, und Sie rufen die Batchdatei auf und geben BAR\BAZ\QUUX an der Eingabeaufforderung ein, der Ordner, der erstellt wird, wird C:\FOO\BAR\BAZ\QUUX\NEW sein. Wenn Sie ein Laufwerk, aber nicht das Stammverzeichnis des Laufwerks angeben (z. B. D:BAR\BAZ\QUUX), wird der neue Ordner relativ zum aktuellen Verzeichnis auf dem Laufwerk erstellt (z. B. wenn das aktuelle Verzeichnis unter D:\YOTTA ist, der Ordner erstellt wäre D:\YOTTA\BAR\BAZ\QUUX\NEW).

0

Ihr Problem ist, dass Sie offenbar die Anführungszeichen um den erforderlichen Verzeichnisnamen eingeben.

In Folge der tatsächliche Befehl ausgeführt sein, ist

md "C:\Users\Munch\Desktop\"All Files\Development"\new" 

die als "C:\Users\Munch\Desktop\"All md interpretiert wird Files\Development"\new"

so zwei Verzeichnisse angelegt werden.

Die wirklich einfache Lösung ist, die Anführungszeichen wegzulassen.

Die programmatische Lösung für den Fall, dass Sie vergessen haben, ist das Entfernen der Anführungszeichen von dir innerhalb des Befehls md.

md "U:\Users\Munch\Desktop\%dir:"=%\new"