Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 02.10.2009 um 14:38:54 Uhr
Verschoben von "Windows" nach "Batches 4 All".
GELÖST

Dateien in eigene Unterordner kopieren Batch

Frage Entwicklung Batch & Shell

Mitglied: horstdeluxe

horstdeluxe (Level 1) - Jetzt verbinden

02.10.2009, aktualisiert 18.10.2012, 5833 Aufrufe, 12 Kommentare

.

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?
Mitglied: 60730
02.10.2009, aktualisiert 18.10.2012
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
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

>
Bitte warten ..
Mitglied: horstdeluxe
02.10.2009 um 12:15 Uhr
Nein, die werden vor dem nächsten kopiervorgang rausgelöscht!

Kann leider keine passende Batch finden, habe schon gesucht

Achja, es kommt vor das im Quellordner Dateien sind (beispiel: 000512), und im Zielordner nicht der passende Unterordner ( P000512), existiert, der muss dann automatisch angelegt werden.
Bitte warten ..
Mitglied: bastla
02.10.2009 um 12:19 Uhr
Hallo horstdeluxe und willkommen im Forum!
Kann leider keine passende Batch finden
Bevor sich das noch ins Wochenende reinzieht, versuch es damit:
01.
@echo off & setlocal 
02.
set "Quelle=d:\Preise_neu" 
03.
set "Ziel=d:\Preise" 
04.
 
05.
pushd "%Quelle%" 
06.
for /f "delims=" %%i in ('dir /b /a-d 0*.') do ( 
07.
    if not exist "%Ziel%\P%%i" md "%Ziel%\P%%i" 
08.
    copy "%%i" "%Ziel%\P%%i" 
09.
10.
popd
Grüße
bastla

@TimoBeil: Du gibst ja wirklich nie auf in Deinen pädagogischen Bemühungen ...
Bitte warten ..
Mitglied: 60730
02.10.2009 um 12:19 Uhr
Zitat von horstdeluxe:
Nein, die werden vor dem nächsten kopiervorgang rausgelöscht!

aha - dann würde ich vermuten copy ist quatsch und Move wäre sinniger?

Kann leider keine passende Batch finden, habe schon gesucht

no comment...

Bitte warten ..
Mitglied: horstdeluxe
02.10.2009 um 12:38 Uhr
Fehlermeldung:

Die NTVDM-CPU hat einen ungültigen efehl entdeckt.
CS:072c IP:0101 OP:65 63 68 6f 20

*Sry hab leider absolut keine Ahnung von Batchfiles....
Bitte warten ..
Mitglied: Biber
02.10.2009 um 14:36 Uhr
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
Bitte warten ..
Mitglied: horstdeluxe
04.10.2009 um 11:43 Uhr
ja.....war mir auch eingefallen ......

...
Bitte warten ..
Mitglied: horstdeluxe
05.10.2009 um 07:37 Uhr
Ich muss das Thema nun doch nocheinmal aufgreifen. Hab einen Fehler gemacht. Die Dateien heißen alle:
P000012
P00.........
P00........

Also immer mit einem "P" vorweg. Wie lautet nun das script, damit er die Dateien in den passenden Ordner:
0000012
00...........
00............

Kopiert und auch einen Ordner ohne das "P" erstellt? Also nur die Kundennr.
Bitte warten ..
Mitglied: Biber
05.10.2009 um 08:06 Uhr
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:
01.
@echo off & setlocal 
02.
set "Quelle=d:\Preise_neu" 
03.
set "Ziel=d:\Preise" 
04.
 
05.
pushd "%Quelle%" 
06.
for /f "delims=" %%i in ('dir /b /a-d P0*.') do call :ProcessFile "%%i" 
07.
PopD 
08.
Goto :eof 
09.
 
10.
:ProcessFile Parameter 1 ist der Dateiname P0xxxx.yyy 
11.
Set "Dateiname=%~1" 
12.
Set "Dateiname=%Ziel%\P%Dateiname:~1%" 
13.
if not exist "%Dateiname%" md "%Dateiname%" 
14.
    copy "%~1" "%Ziel%\P%%i" 
15.
16.
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]
Bitte warten ..
Mitglied: horstdeluxe
05.10.2009 um 08:19 Uhr
Sehr nett, leider legt er trotzdem Ordner mit "P" an und Dateien werden keine kopiert. Im Ordner Preise entsteht lediglich eine "P%i" Datei mit 0kb

@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%\%Dateiname:~1%"
if not exist "%Dateiname%" md "%Dateiname%"
copy "%~1" "%Ziel%\P%%i"
)
Goto :eof


Soweit bin ich schonmal, da war noch ein P zuviel. Nun kopiert er aber die Dateien immernoch nicht.
Die fehlenden Ordner werden richrig erzeugt.
Bitte warten ..
Mitglied: Biber
05.10.2009 um 09:06 Uhr
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".

01.
@echo off & setlocal 
02.
set "Quelle=d:\Preise_neu" 
03.
set "Ziel=d:\Preise" 
04.
 
05.
pushd "%Quelle%" 
06.
for /f "delims=" %%i in ('dir /b /a-d P0*.') do call :ProcessFile "%%i" 
07.
PopD 
08.
Goto :eof 
09.
 
10.
:ProcessFile Parameter 1 ist der Dateiname P0xxxx.yyy 
11.
Set "Dateiname=%~1" 
12.
REM Falls Der Ordnername KEINE Endung haben soll 
13.
REM dann Set "Dateiname=%~n1 
14.
Set "Dateiname=%Ziel%\%Dateiname:~1%" 
15.
if not exist "%Dateiname%" md "%Dateiname%" 
16.
    copy "%~1" "%Dateiname%\" 
17.
18.
Goto :eof
Gruße
Biber
Bitte warten ..
Mitglied: horstdeluxe
05.10.2009 um 09:12 Uhr
Jap! Super! Dankeschön!!!!
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
C und C++
Dateien in Ordner kopieren anhand vom Teil eines Dateinamen (22)

Frage von onlyforu8373 zum Thema C und C ...

Batch & Shell
Dateien trotz Verwendung kopieren (2)

Frage von 112Timo zum Thema Batch & Shell ...

Batch & Shell
gelöst Ordner anhand von Dateinamen erstellen und Dateien in Ordner kopieren (3)

Frage von getmoving zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateien mit Teil des Dateinamen per Batch in Unterordner verschieben (14)

Frage von smitternacht zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...