ok, wenn Sie nur alle Dateien Verzeichnisse aus dem Inneren \test
\ dann verschieben möchten, wird dies die Dateien zuerst tun, dann Verzeichnisse in einem Batch. Die for/d kopiert die Verzeichnisse und Unterverzeichnisse und Dateien.
@echo off
move "d:\temp\test\*" "d:\temp\archive"
for /d %%a in ("D:\temp\test\*") do move "%%~fa" "d:\temp\archive\"
als eine Randnotiz, von cmd wenn Sie unter laufen, erhalten Sie einen Fehler.
move d:\temp\test\* d:\temp\archive
Das ist, weil es alle Dateien, aber nicht Verzeichnisse verschiebt. Wenn Sie The filename, directory name, or volume label syntax is incorrect.
bekommen, gibt es keine Dateien und nur Ordner, die Ihr Befehl move nicht sehen kann.
HINWEIS aus einer Batch-Datei, die /Y
Schalter deaktiviert und Ordner werden nicht ersetzt werden, wenn vorhanden. Wenn Sie also häufig überschreiben möchten, verwenden Sie lieber xcopy
und aktualisieren Sie stattdessen das Archiv. Führen Sie anschließend einen Löschvorgang in d:\temp
aus, sobald die Dateien erfolgreich kopiert wurden.
Schließlich, immer schließen Sie Ihre Pfade in Doppel "
. In diesem Fall wird es ohne die doppelte Anführungszeichen gut funktionieren, aber wenn Sie so etwas wie move d:\program files\temp\* d:\temp\archives
haben wird es einen Fehler, da der Raum zwischen Programm und Dateien zu erstellen, so dass es immer besser ist, move "d:\program files\temp\*" "d:\temp\archive
EDIT Das Verständnis der %%~
zu verwenden Zuordnungen. In diesen Beispielen verwenden wir %%I
statt %%a
%~I : expands %I removing any surrounding quotes (")
%~fI : expands %I to a fully qualified path name
%~dI : expands %I to a drive letter only
%~pI : expands %I to a path only
%~nI : expands %I to a file name only
%~xI : expands %I to a file extension only
%~sI : expanded path contains short names only
%~aI : expands %I to file attributes of file
%~tI : expands %I to date/time of file
%~zI : expands %I to size of file
%~$PATH:I : searches the directories listed in the PATH
environment variable and expands %I to the
fully qualified name of the first one found.
if the environment variable name is not
defined or the file is not found by the
search, then this modifier expands to the
empty string
The modifiers can be combined to get compound results:
%~dpI : expands %I to a drive letter and path only
%~nxI : expands %I to a file name and extension only
%~fsI : expands %I to a full path name with short names only
%~dp$PATH:I : searches the directories listed in the PATH
environment variable for %I and expands to the
drive letter and path of the first one found.
%~ftzaI : expands %I to a DIR like output line`
Dank! würdest du bitte auch erklären was "%% ~ fa" bedeutet? Ich weiß nur, dass "%% a" jeden Ordner innerhalb von "d: \ temp \ test \" darstellt. – ioojimooi
Sicher. %% ~ fa würde sich auf den vollständig qualifizierten Pfad beziehen. Denken Sie daran, dass wir %% a zu 'D: \ temp \ test \ *' zuweisen, wobei '*' der vollständige Pfad wäre, also wäre '%% ~ fa 'der vollständige Pfad. Wenn Sie also 'D: \ temp \ test \ ordner1'' D: \ temp \ test \ ordner2' haben, wäre jeder '%% ~ fa', um zu sehen, wie es funktioniert, erstellen Sie einen Stapel und fügen Sie diesen ein. es wird nur den vollen Weg zurückgeben. '@echo aus für/d %% a in (" D: \ temp \ test \ * ") echo %% ~ fa' –
@ioojimooi Dies würde das gleiche tun, aber nicht den gesamten Pfad echo, nur die Ziel selbst 'für/d %% a in (" D: \ temp \ test \ * ") echo %% ~ na' –