per Batch alle dateien eines Ordners jeweils in einen Ordner der den Namen der Datei erhält verschieben.
Hallo...
habe folgendes Batch-Anliegen:
Es sollen in einer Schleife alle Dateien (z.B. 123.pdf, 456.pdf, 456.log) eines Ordners z.B. (x:\in\) jeweils verschoben werden in einen Ordner mit Namen der Datei z.B. x:\123\123.pdf, x:\456\456.pdf und x:\456\456.log.
Dateien mit gleichem Dateinamen aber anderer Endung soll im gleichen Zielordner landen. Meist ist dieser Zielordner korrekt bezeichnet schon vorhanden, in wenigen Fällen nicht. Hier sollte der Ordner also vorher angelegt werden.
Der Dateiname ist in der Länge nicht fix. Die Batch-Datei wird nicht vom gleichen Ordner aufgerufen...
Für die meisten hier sicher trivial. Leider nicht für mich. Bin für alle Tipps dankbar...
habe folgendes Batch-Anliegen:
Es sollen in einer Schleife alle Dateien (z.B. 123.pdf, 456.pdf, 456.log) eines Ordners z.B. (x:\in\) jeweils verschoben werden in einen Ordner mit Namen der Datei z.B. x:\123\123.pdf, x:\456\456.pdf und x:\456\456.log.
Dateien mit gleichem Dateinamen aber anderer Endung soll im gleichen Zielordner landen. Meist ist dieser Zielordner korrekt bezeichnet schon vorhanden, in wenigen Fällen nicht. Hier sollte der Ordner also vorher angelegt werden.
Der Dateiname ist in der Länge nicht fix. Die Batch-Datei wird nicht vom gleichen Ordner aufgerufen...
Für die meisten hier sicher trivial. Leider nicht für mich. Bin für alle Tipps dankbar...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 107144
Url: https://administrator.de/forum/per-batch-alle-dateien-eines-ordners-jeweils-in-einen-ordner-der-den-namen-der-datei-erhaelt-verschieben-107144.html
Ausgedruckt am: 23.01.2025 um 17:01 Uhr
6 Kommentare
Neuester Kommentar
ICh weiß leider nicht ob dir das weiterhelfen kann, aber Robocopy ist für solche Angelegenheiten immer sehr gut.
http://www.wintotal.de/Artikel/robocopy/robocopy.php
Gruß Rico
http://www.wintotal.de/Artikel/robocopy/robocopy.php
Gruß Rico
Moin paulkuhn,
willkommen im Forum.
Im Prinzip brauchst Du nur ein bis zwei Zeilen vom CMD-Prompt für Dein Vorhaben.
Eine zeile, um das (eventuell) noch nicht vorhandene verzeichnis anzulegen und eine Anweisung, um die Dateien in dieses Verzeichnis zu MOVEn.
Demo am CMD-Prompt [einzugebene Zeilen beginnen mit ">"]
Bei meiner vorhandenen Datei d:\temp1\sy6help.pdf würde als ECHO herauskommen:
In einem Batch auf ALLE Dateien angewandt (nicht nur auf *.pdf) sähe das so aus:
[Edit] ungetestete Skizze - aber erkennbar (s.u.) [/Edit]
Dieses ganze kryptische %%~pdnxi-Geraffel ist nur in den ersten zwei Leseversuchen unverständlich,
mit der Hilfe zu FOR/? im unteren Drittel hast Du den Code schnell geknackt.
Grüße
Biber
willkommen im Forum.
Im Prinzip brauchst Du nur ein bis zwei Zeilen vom CMD-Prompt für Dein Vorhaben.
Eine zeile, um das (eventuell) noch nicht vorhandene verzeichnis anzulegen und eine Anweisung, um die Dateien in dieses Verzeichnis zu MOVEn.
Demo am CMD-Prompt [einzugebene Zeilen beginnen mit ">"]
> for %i in (d:\temp1\*.pdf) do @echo if not exist "%~dpi%~ni" md "%~dpi%~ni"
> for %i in (d:\temp1\*.pdf) do @echo move "%i" "%~dpi%~ni\*.*"
if not exist "d:\temp1\sy6help" md "d:\temp1\sy6help"
move "d:\temp1\sy6help.pdf" "d:\temp1\sy6help\*.*"
In einem Batch auf ALLE Dateien angewandt (nicht nur auf *.pdf) sähe das so aus:
::------snipp MoveIntoSubdirs.cmd
@FOR %%i IN (d:\EinStartVerzeichnis\*.*) do @(
IF NOT EXIST "%%~dpi%%~ni" MD "%%~dpi%%~ni"
MOVE "%%i" "%%~dpi%%~ni\"
)
Dieses ganze kryptische %%~pdnxi-Geraffel ist nur in den ersten zwei Leseversuchen unverständlich,
mit der Hilfe zu FOR/? im unteren Drittel hast Du den Code schnell geknackt.
Grüße
Biber
Moin paulkuhn,
ausgerechnet bei dem letzten Kommentar habe ich NICHT druntergeschrieben "[ungetestete Skizze]"...*g
Ich korrigier es gleich oben.
Zu Deiner Frage: Wenn Du ein "festes" neues Root-Zeilverzeichnis hast:
--> ganz klar, dann schreib es fest rein in die (ohnehin nur eine) Zeile.
Dann wird im ersten Wurf daraus:
...und wenn es bisschen wartbarer werden soll:
[ungetestete Skizze]
Grüße
Biber
ausgerechnet bei dem letzten Kommentar habe ich NICHT druntergeschrieben "[ungetestete Skizze]"...*g
Ich korrigier es gleich oben.
Zu Deiner Frage: Wenn Du ein "festes" neues Root-Zeilverzeichnis hast:
--> ganz klar, dann schreib es fest rein in die (ohnehin nur eine) Zeile.
Dann wird im ersten Wurf daraus:
::------snipp MoveIntoSubdirsV2.cmd
@FOR %%i IN(d:\EinStartVerzeichnis\*.*) do @(
IF NOT EXIST "C:\test%%~ni" MD "c:\test%%~dpi%%~ni"
MOVE "%%i" "c:\test%%~ni\"
)
::------snipp MoveIntoSubdirsV3.cmd
@echo off & setlocal
Set "QuellRoot=d:\EinStartVerzeichnis"
Set "ZielRoot=D:\test"
@FOR %%i IN ("%QuellRoot%\*.*") do @(
IF NOT EXIST "%ZielRoot%\%%~ni" MD "%zielRoot%\%%~dpi%%~ni"
MOVE "%%i" "%ZielRoot%\%%~ni\"
)
Grüße
Biber