Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 2167 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

MFG 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Eine Batch zum Sortieren verschiedener Dateien in Ordner (16)

Frage von Jaglag zum Thema Batch & Shell ...

Batch & Shell
gelöst Alle Dateien in einem Ordner umbenennen (5)

Frage von l.scheper zum Thema Batch & Shell ...

Microsoft
gelöst Batch Datei zum Kopieren bestimmter ordner mit Pfad (6)

Frage von eivlox zum Thema Microsoft ...

Batch & Shell
gelöst Batch: alle Ordner mit einem bestimmten Namen kopieren (4)

Frage von Remsboys zum Thema Batch & Shell ...

Neue Wissensbeiträge
Multimedia

Raspberry Pi als Digital-Signage-Computer

(1)

Information von BassFishFox zum Thema Multimedia ...

Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(16)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Freigabe aus anderem Netz nicht erreichbar (33)

Frage von McLion zum Thema Router & Routing ...

Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail (24)

Frage von ahstax zum Thema Visual Studio ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (19)

Frage von Michael-ITler zum Thema Batch & Shell ...

Windows Netzwerk
Netzwerk Neustrukturierung (15)

Frage von IT-Dreamer zum Thema Windows Netzwerk ...