2010-12-05 15 views
11

Ordner c:\folder1 enthält subfolder1, subfolder2, etc ..Wie verschiebt man alle Dateien mit spezifischer Erweiterung von allen Unterverzeichnissen mit CMD zu ihren Eltern?

Diese Unterverzeichnisse enthalten .pdf- und .db-Dateien.

Wie können alle .pdf-Dateien mit dem Windows-Befehlsinterpreter nach c:\folder1 verschoben werden?

+1

suchen Sie Tun Sie dies mit einer bestimmten Programmiersprache? –

+0

Entschuldigung, ich hätte das erwähnen sollen. In MS-DOS mit CMD. – mihai

Antwort

1

nimmt einen wilden stab im Dunkeln hier, aber wenn ich mich richtig erinnere, kann DOS Klackse handhaben und das Äquivalent von mv ist MOVE, so:

MOVE C:\FOLDER1\*\*.PDF C:\FOLDER1\

+0

Ich habe versucht, kopieren B: \ * \ *. * C: \ temp \ cdrw \ 'und habe diesen Fehler:' Der Dateiname, Verzeichnisname oder Volume-Label-Syntax ist falsch. – Ryan

1
MOVE "C:\FOLDER 1\PDF FILES\*.pdf" "C:\FOLDER 1" 
MOVE "C:\FOLDER 1\DB FILES\*.db" "C:\FOLDER 1" 

Nach dem Bewegungsbefehl, Sie haben den Quellordner gefolgt von dem Ziel, wohin die Dateien verschoben werden. Das * vor jeder Dateierweiterung ist eine Platzhalterfunktion, die den gesamten in diesem Verzeichnis vorhandenen Dateityp auswählt.

Auch, wenn Sie eine .bat-Datei mit diesen Befehlen erstellen können, wenn Sie möchten. Um dies zu tun, Ihre Befehle in den Editor einfügen und speichern Sie es als .bat statt .txt

Dann können Sie einen Doppelklick auf die Datei, und es werden die Befehle in der Datei jedes Mal, wenn Sie ausführen. Dies ist nützlich, wenn Sie sich wiederholende Aufgaben benötigen, die dies erfordern.

4

Ich glaube nicht, dass es einen Platzhalter gibt, der auf Unterordner funktioniert, also möchten Sie eine Schleife verwenden, um durch jeden Unterordner zu gehen und * .pdf zu verschieben;

FOR /R [your root folder path] %%G IN (*.pdf) DO move %%G [new path]

Der Befehl nach DO ist von Natur aus in seinen eigenen Anführungszeichen. Wenn Sie Leerzeichen in Ihrer Quell- oder Ziel antizipieren, doppelte Anführungszeichen verwenden, um sie zu verkapseln, z.B .:

FOR /R "source folder with spaces" %%G IN (*.pdf) DO move "%%G" "dest path with spaces"

HINWEIS die Anführungszeichen um %% G, werden diese für den Bewegungsbefehl erforderlich, um den Weg zu lösen.

** EDIT: Als Antwort auf die akzeptierte Antwort, Von Befehl fordert unter Windows XP und Windows 7, jeweils:

command prompts

Dies zeigt, dass ein Platzhalter nicht in Pfade nicht funktioniert, nur für Dateien in einem einzigen Verzeichnis (zB C: \ Ordner * .files). Die Eingabeaufforderung wird nicht rekursiv ausgeführt, wenn sie auf einen Platzhalter trifft.

+0

Dies wird durch alle Unterordner, durch der Weg, nicht nur der erste Zweig. – Eaglebird

+0

Von Aufforderungen auf WinXP und Win7: (mispost, ignorieren Sie das) – Eaglebird

+0

Sie sind richtig, das Plakat will eine rekursive Lösung, die ich falsch gelesen habe. –

5

Zwei Jahre zu spät für das OP, aber da dies etwas war, was ich zu lösen versuchte, dachte ich, ich würde die Lösung für die Nachwelt veröffentlichen. Die äußere for-Schleife listet die Unterverzeichnisse im Arbeitsverzeichnis auf, die innere for-Schleife listet die Unterverzeichnisse auf, die zum Zielpfad verschoben werden sollen.

for /d %f in (*.*) do for /d %e in (%f\*.*) do move "%e" DestinationPath 

Dies funktioniert am besten, wenn DestinationPath kein Unterordner des Arbeitsverzeichnisses ist, wie es versucht, DestinationPath in sich zu bewegen.

den Befehl zu bestätigen, bevor es Großhandel ausgeführt wird, starten Sie einfach heraus die letzten Bewegungsbefehle hallte wie so:

for /d %f in (*.*) do for /d %e in (%f\*.*) do echo move "%e" DestinationPath 

und Kopie/eines der Ergebnisse fügen Sie ihn laufen und bestätigen Sie mit der Art und Weise arbeiten Sie erwartet . Dann entferne das Echo und beweg dich.

+0

funktioniert Dies funktioniert nicht, wenn die Unterverzeichnisse Leerzeichen in ihren Namen haben –

18

Dieser arbeitete für mich

Dieser Befehl wird rekursiv al PDF-Dateien aus Quelle kopieren Verzeichnis Ziel cmd in Windows 7 - getestet und funktioniert

für/r "c: \ source_directory \" % % x in (* .pdf) verschiebe "%% x" "c: \ target_directory \"

hoffen, dass es

+4

% x ist genug, %% X ist für eine Batch-Datei – Floni

+0

Ich denke 'for/r" b: \ "% x in (* .mp3) kopiere"% x "" c: \ temp \ cdrw "' funktioniert, weiß aber nicht, ob es Unterordner verarbeitet. – Ryan

0

Robocopy für mich hat Wunder hilft:

robocopy c:\cache c:\cache-2012 ?????-2012*.hash /S /MOV 

Ich habe es verwendet, um alle Dateien mit bestimmten Maske aus c:\cache und seine zahlreichen Unterverzeichnisse zu verschieben.

3

Ich weiß, das ist superlate, aber nur für den Fall, dass es jedem hilft.

diese verwendet, um alle Unterordner für eine MKV-Datei zu suchen und sie in das aktuelle Verzeichnis der Batchdatei in residiert bewegen.

FOR /D /r %%F in ("*") DO (
    pushd %CD% 
    cd %%F 
     FOR %%X in (*.mkv) DO (
      move "%%X" "%CD%" 
     ) 
    popd 
) 
0
@echo on 

for /r "F:\All_drawings\newdrg\" %%x in (*.tiff) do move "%%x" "F:\Alldrawings" 

pause 

{bewegt alle Dateien aus dem Ordner und seinen newdrg "Unterordner" für den Zielordner Alldrawings, dieser Befehl ist für Batch-Datei-Betrieb für die Befehlszeile verwenden einzigen "%" in beiden Orten}.

0

Es gibt einen anderen Weg, um dies in Windows Explorer zu tun (GUI, nicht-Eingabeaufforderung):

  • Navigieren Sie zu dem Verzeichnis auf oberster Ebene
  • im Suchfeld in der oberen rechten Ecke, geben Sie * .pdf und auf suchen
  • alle Dateien auswählen und ziehen Sie sie in den Ordner der obersten Ebene
  • die Antworten auf die Aufforderungen über das Überschreiben von Dateien