Dateien in eigene Unterordner kopieren Batch
.
Hallo,
ich habe folgendes Problem und brächt dafür am besten eine Batchfile.
Wir haben folgenden Ordner
d:\Preise_neu\
in dem Ordner sind Kundendateien wie folgt
d:\Preise_neu\000009
d:\Preise_neu\000012
d:\Preise_neu\000015
es sind ca.500 Stück. Diese Dateien müssen wir nun per Hand in die jeweiligen passenden Ordner kopieren. Dr sieht wie folgt aus:
d:\preise\P000009
d:\preise\P000012
d:\preise\P000015
Also d:\Preise_neu\000009 in d:\preise\P000009 usw.
Ein umbenennen der Dateien oder Ordner darf nicht sein!
Habt ihr eine Idee?
Hallo,
ich habe folgendes Problem und brächt dafür am besten eine Batchfile.
Wir haben folgenden Ordner
d:\Preise_neu\
in dem Ordner sind Kundendateien wie folgt
d:\Preise_neu\000009
d:\Preise_neu\000012
d:\Preise_neu\000015
es sind ca.500 Stück. Diese Dateien müssen wir nun per Hand in die jeweiligen passenden Ordner kopieren. Dr sieht wie folgt aus:
d:\preise\P000009
d:\preise\P000012
d:\preise\P000015
Also d:\Preise_neu\000009 in d:\preise\P000009 usw.
Ein umbenennen der Dateien oder Ordner darf nicht sein!
Habt ihr eine Idee?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 02.10.2009 um 14:38:54 Uhr
Verschoben von "Windows" nach "Batches 4 All".
Content-ID: 126312
Url: https://administrator.de/contentid/126312
Ausgedruckt am: 25.11.2024 um 12:11 Uhr
12 Kommentare
Neuester Kommentar
Servus,
das kannst du mit einer Schleife lösen.
Allerdings ist das kopieren nicht wirklich sinnig - denn jedesmal - wenn die Batch dann läuft - findest er ja noch die - die vorher bereits kopiert worden sind.
Die Batch, die du suchst - gibt es bereits - schau mal genauer
ich würde behaupten
Gruß
ist eigentlich eine Frage für Batch & Shell und da findet sich auch die Lösung
>
das kannst du mit einer Schleife lösen.
Allerdings ist das kopieren nicht wirklich sinnig - denn jedesmal - wenn die Batch dann läuft - findest er ja noch die - die vorher bereits kopiert worden sind.
Die Batch, die du suchst - gibt es bereits - schau mal genauer
ich würde behaupten
Datei in gleichnamigen Ordner kopieren per Batch
wäre nicht so verkehrt Gruß
ist eigentlich eine Frage für Batch & Shell und da findet sich auch die Lösung
>
Hallo horstdeluxe und willkommen im Forum!
Grüße
bastla
@timobeil: Du gibst ja wirklich nie auf in Deinen pädagogischen Bemühungen ...
Kann leider keine passende Batch finden
Bevor sich das noch ins Wochenende reinzieht, versuch es damit:@echo off & setlocal
set "Quelle=d:\Preise_neu"
set "Ziel=d:\Preise"
pushd "%Quelle%"
for /f "delims=" %%i in ('dir /b /a-d 0*.') do (
if not exist "%Ziel%\P%%i" md "%Ziel%\P%%i"
copy "%%i" "%Ziel%\P%%i"
)
popd
bastla
@timobeil: Du gibst ja wirklich nie auf in Deinen pädagogischen Bemühungen ...
Moin horstdeluxe,
unter welchem Namen/mit welcher Endung hast Du den bastlas Schnipsel gespeichert?
Die richtige Endung sollte *.cmd oder *.bat sein.
Und die Datei sollte als unformatierte Textdatei gespeichert sein ( macht ein beliebiger brauchbarer Texteditor oder, falls nichts vorhanden auch NotePad).
Grüße
Biber
unter welchem Namen/mit welcher Endung hast Du den bastlas Schnipsel gespeichert?
Die richtige Endung sollte *.cmd oder *.bat sein.
Und die Datei sollte als unformatierte Textdatei gespeichert sein ( macht ein beliebiger brauchbarer Texteditor oder, falls nichts vorhanden auch NotePad).
Grüße
Biber
Moin horstdeluxe,
eigentlich wollten wir doch diese Kuh schon vor dem letzten Wochenende vom Eis haben..
In Anlehnung an bastlas Schnipsel oben wäre eine Variante:
[ungetestete Skizze]
Der Einbau eines Unteraufruf mit "Call :Whatever" ist sicherer/wartbarer, weil nun mit dieser kryptisch anmutenden SubString-Funktionalität [Set "Dateiname=%Dateiname:~1%"] herumgeeiert werden muss.
Diese Syntax findest du unter Set/? am CMD-Prompt erklärt.
Grüße
Biber
[Edit Biber] Alles Montag-Morgen-Gestolpere. Siehe unten. [/Biber]
eigentlich wollten wir doch diese Kuh schon vor dem letzten Wochenende vom Eis haben..
In Anlehnung an bastlas Schnipsel oben wäre eine Variante:
@echo off & setlocal
set "Quelle=d:\Preise_neu"
set "Ziel=d:\Preise"
pushd "%Quelle%"
for /f "delims=" %%i in ('dir /b /a-d P0*.') do call :ProcessFile "%%i"
PopD
Goto :eof
:ProcessFile Parameter 1 ist der Dateiname P0xxxx.yyy
Set "Dateiname=%~1"
Set "Dateiname=%Ziel%\P%Dateiname:~1%"
if not exist "%Dateiname%" md "%Dateiname%"
copy "%~1" "%Ziel%\P%%i"
)
Goto :eof
[ungetestete Skizze]
Der Einbau eines Unteraufruf mit "Call :Whatever" ist sicherer/wartbarer, weil nun mit dieser kryptisch anmutenden SubString-Funktionalität [Set "Dateiname=%Dateiname:~1%"] herumgeeiert werden muss.
Diese Syntax findest du unter Set/? am CMD-Prompt erklärt.
Grüße
Biber
[Edit Biber] Alles Montag-Morgen-Gestolpere. Siehe unten. [/Biber]
Sorry, horstdeluxe,
ich habe montagmorgens immer etwas Anlaufschwierigkeiten.
Bitte verbuche meinen vorangegangenen Kommentar unter "Sonstige Anekdoten".
Jetzt nochmal ein Versuch für den Anwendungsfall, dass die Dateien "P0xxx.yyy" heißen im Original und im ordner, Aber der Ordner selbst nur die Zeichen ab Stelle 2 des Dateinamens hat ("000123...." statt "P000123".
Gruße
Biber
ich habe montagmorgens immer etwas Anlaufschwierigkeiten.
Bitte verbuche meinen vorangegangenen Kommentar unter "Sonstige Anekdoten".
Jetzt nochmal ein Versuch für den Anwendungsfall, dass die Dateien "P0xxx.yyy" heißen im Original und im ordner, Aber der Ordner selbst nur die Zeichen ab Stelle 2 des Dateinamens hat ("000123...." statt "P000123".
@echo off & setlocal
set "Quelle=d:\Preise_neu"
set "Ziel=d:\Preise"
pushd "%Quelle%"
for /f "delims=" %%i in ('dir /b /a-d P0*.') do call :ProcessFile "%%i"
PopD
Goto :eof
:ProcessFile Parameter 1 ist der Dateiname P0xxxx.yyy
Set "Dateiname=%~1"
REM Falls Der Ordnername KEINE Endung haben soll
REM dann Set "Dateiname=%~n1
Set "Dateiname=%Ziel%\%Dateiname:~1%"
if not exist "%Dateiname%" md "%Dateiname%"
copy "%~1" "%Dateiname%\"
)
Goto :eof
Gruße
Biber