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
GELÖST

Dateien mit Batch nach Namensanfang in verschiedene Ordner kopieren bzw umbenennen

Frage Entwicklung Batch & Shell

Mitglied: Nudl92

Nudl92 (Level 1) - Jetzt verbinden

10.05.2013 um 10:31 Uhr, 2133 Aufrufe, 6 Kommentare

Hallo zusammen,

ich habe vorab versucht durch andere Threads mein Problem zu lösen und mich in die Batch-Programmierung einzulesen, da meine Frage zu den anderen doch sehr ähnlich ist und recht häufig vorkommt. Da sich das ganze jedoch als schwieriger herausgestellt hat als erwartet, hoffe ich auf eure Unterstützung.Hier nun mein Problem:

Grundsätzlich möchte ich Dateien in verschiedene Ordner kopieren und gegebenenfalls umbennen. Auswahlkriterium ist hierbei der Name der Dateien.
Ich habe ein Hauptverzeichnis, in dem alle Dateien hinterlegt sind, diese haben z.B den Namen:
"G01 Box21 13.04.08-15.36.25" ; "G01 Box21 13.04.10-15.12.25"
"G02 Box21 13.04.08-15.42.50" ; "G02 Box21 13.04.10-15.10.02"
"G03 Box21 13.04.08-15.55.20" usw. (Gxx xxxxx Datum-Uhrzeit)
Nun möchte ich je nach Namensanfang, also G01,G02,G03 usw, die Dateien in verschiedene Ordner kopieren (Ordner und Hauptverzeichnis auf selbem Laufwerk). Diese sind schon vorab erstellt und benannt. Schwierigkeit bereitet haben mir dabei die Leerzeichen im Dateinamen...
Wenn möglich wäre es gut, die Dateien noch wie folgt unzubenennen:
Von "G01 Box21 13.04.08-15.36.25" zu z.B. "G01 VV90T 13.04.08-15.36.25", wobei nur alle mit dem selben Namensanfang gleich umbenannt werden sollen, sprich
"G02 Box21 13.04.08-15.42.50" soll hingegen zu "G02 VV120T 13.04.08-15.42.50" umbenannt werden. Dabei können die Bezeichnung wie "Box21", sowie "VV90T" variabel lang sein. Das Umbenennen wäre nur der "Feinschliff", wichtig wäre erstmal die Dateien in verschiedene Ordner zu kopieren. (Ich habe bewusst die Pfade und Namen, zu denen die Dateien umbenannt werden sollen, nicht explizit angegeben, da die Batch-Datei möglichst allgemeingültig sein soll, natürlich nur wenn das möglich ist)
Ich hoffe ich habe alle wichtigen Infos abgedeckt und bedanke mich schonmal im Voraus

Mit freundlichen Grüßen Nudl92
Mitglied: bastla
10.05.2013, aktualisiert um 11:55 Uhr
Hallo Nudl92 und willkommen im Forum!

Schematisch etwa so:
for %%i in ("D:\Alter Pfad\G0? Box*.*") do for /f "tokens=1,2*" %%a in ("%%~nxi") do @echo xcopy "%%i" "D:\Neuer Pfad\%%a\"
Durch das "echo" vor dem "xcopy" werden die Kopierbefehle (zum Testen) nur angezeigt - wenn Du es entfernst, wird wirklich kopiert, und wegen "xcopy" muss auch der Zielordner nicht vorweg angelegt werden ...

Was das Umbenennen anlangt: Du könntest eine Textdatei mit den Zuordnungen in der Form
01.
G01 VV90T 
02.
G02 VV120T 
03.
...
anlegen und das dann (ungetestet) etwa so integrieren:
01.
for %%i in ("D:\Alter Pfad\G0? Box*.*") do for /f "tokens=1,2*" %%a in ("%%~nxi") do ( 
02.
    findstr /ibc:"%%a " "D:\Zuordnung.txt">nul && ( 
03.
        for /f "tokens=1*" %%m in ('findstr /ibc:"%%a " "D:\Zuordnung.txt"') do echo @xcopy "%%i" "D:\Neuer Pfad\%%a\%%a %%n %%c*" 
04.
    ) || ( 
05.
        echo Keine Zuordnung fuer "%%a" gefunden - "%%i" nicht kopiert! 
06.
07.
)
Voraussetzung: Der zu ersetzende Teil ("Box21") enthält keine Leerzeichen.
Anmerkung: Umbenannt werden so nur die kopierten Dateien.

Grüße
bastla
Bitte warten ..
Mitglied: jompsi
10.05.2013, aktualisiert um 12:08 Uhr
Hallo

Ich habe kurz ein kleines Batch-Script geschrieben. Ich hoffe das hilft dir

01.
::Variabeln deklarieren 
02.
Set G01_old="G01 Box21 *.txt" 
03.
Set G01_new="G01 VV90T *.txt" 
04.
Set G02_old="G02 Box21 *.txt" 
05.
Set G02_new="G02 VV120T *.txt" 
06.
Set source="C:\Temp\Test\" 
07.
Set dest1="C:\Temp\Test\Test1\" 
08.
Set dest2="C:\Temp\Test\Test2\" 
09.
 
10.
::Files umbenennen 
11.
cd %source% 
12.
ren %G01_old% %G01_new% 
13.
ren %G02_old% %G02_new% 
14.
 
15.
::Files kopieren 
16.
FOR %%a IN (%source%%G01_new%) DO copy "%%a" %dest1% 
17.
FOR %%a IN (%source%%G02_new%) DO copy "%%a" %dest2% 
18.
pause
Bei mir hat es funktioniert

Wende es aber nicht sofort produktiv an. Mach auch ein paar kleine Tests.

Freundliche Grüsse
jompsi
Bitte warten ..
Mitglied: bastla
10.05.2013 um 11:54 Uhr
@ jompsi

Du solltest vor dem Umbenennen dafür sorgen, dass die Dateien auch sicher gefunden werden - daher entweder den Quellpfad mitgeben oder vorweg
cd /d %source%
oder
pushd %source%
verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: jompsi
10.05.2013 um 12:11 Uhr
Habe den Ratschlag von bastla im meinem vorherigen Beitrag hinzugefügt.

Danke.

Hatte bei mir das Skript im selben Verzeichnis wie die Testdateien.
Bitte warten ..
Mitglied: Nudl92
10.05.2013 um 13:36 Uhr
Super, vielen Dank an euch!! Vorallem für die schnelle Antwort. Aus irgendeinem Grund ging der cd Befehl nicht, mit pushd hat es aber geklappt.

Grüße Nudl92
Bitte warten ..
Mitglied: bastla
10.05.2013 um 15:40 Uhr
Hallo Nudl92!
Aus irgendeinem Grund ging der cd Befehl nicht
Vielleicht weil ein "/d" gefehlt hat?

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(2)

Tipp von agowa338 zum Thema Windows 10 ...

Ä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
gelöst Batch: Bilder (gewisse Nummern) vom Verzeichnis A in einen Ordner Kopieren (3)

Frage von sagula91 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 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...