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

Kopieren - bei doppelten Dateinamen - umbenennen

Frage Entwicklung Batch & Shell

Mitglied: sk1412

sk1412 (Level 1) - Jetzt verbinden

11.10.2011 um 12:35 Uhr, 13449 Aufrufe, 7 Kommentare

Liebe Admin-Freunde

ich habe folgende Frage , bei der ich keine Lösung im Archiv gefunden habe.
Ich erstelle Aufnahmen mit dem Handy, die als .amr Dateien gespeichert werden.
Dieser erhalten automatisch einen Datei-Namen mit einer fortlaufenden Nummer
z.B. clip000.amr , clip001.amr clip002.amr usw
auf den Handy änder ich die Dateinamen teilweise mit Ergänzungen
z.B. clip000 dies ist ein test.amr
teilweise änder ich aber nichts.
Wenn ich die Dateien auf meinen PC kopiert habe (ich erstelle dafür immer
ein neues Verzeichnis) z.B. mit Datum
d:\20111001 für alle Dateien, die bis zum 01.10.2011 erstellt wurden
d:\20111009 für alle Dateien vom 2.10.2011 bis 09.10.2011
tauchen natürlich "doppelte" Dateinamen in den beiden Verzeichnissen auf
z.B. die nicht umbenannte Datei clip003.amr

Jetzt möchte ich ALLE Dateien aus ALLEN Verzeichnissen
in ein separates Verzeichnis kopieren.
Beim Kopieren sollen, wenn ein Dateiname doppelt vorhanden ist
z.B. clip003.amr
diese Datei umbenannt werden und beispielweise eine
Leerzeichen und eine Zahl
ergänzt werden
clip003 1.amr
Falls noch einmal eine Datei aus einem anderen Verzeichnis
mit dem Namen clip003.amr vorkommt
soll dieser Dateiname mit einer neuen Ergänzung
z.B. clip003 2.amr
geändert und dann kopiert werden.
Was ergänzt werden soll, ist mir eigentlich egal. Vielleicht gibt es Sinn,
z.B. das Erstellungsdatum in der Form JJJMMTT hhmmss zu ergänzen
(dann ist der Dateiname ja EINDEUTIG)
clip003 201110902 120503.amr

Ich hoffe, meine Problem klar dargestellt zu haben
und freu mich auf einen Tip, wie man so etwas lösen kann.

Besten Gruß
Stefan
Mitglied: min6zeichen
11.10.2011 um 13:22 Uhr
Vielleicht ist meine Lösung zu einfach gedacht:
Windows 7 fragt nach, ob es eine Datei ersetzen soll, oder ein "(2)" dranhängen soll.
Um alle Dateien in allen Verzeichnissen auszuwählen benutze ich immer die Windows Suche im Explorer Fenster. oben rechts. Gibt man dort ein Sternchen ein, bekommt man alle Dateien in allen Ordnern angezeigt.
Zusammen ergibt das:
per Windows Explorer auf D:\ gehen
oben rechts nach * suchen
strg-a
strg-c
Zielordner wählen
strg-v
auswählen, dass man die Entscheidung für alle weiteren Dateien auch nehmen will und das "beide dateien behalten" anklicken.
Bitte warten ..
Mitglied: sk1412
11.10.2011 um 13:27 Uhr
Hallo
Danke für den Lösungsansatz!
Nur was macht Windows 7, wenn die Datei ein 2. oder ein drittes Mal vorhanden ist.
Dann müsste die (2) durch eine (3) usw ersetzt werden.
Macht das Windows7 auch so ?
Habe leider hier nur einen Rechner mit WindowsXP, und dort würden die Dateien überschrieben
Und das will ich auf keinen Fall !
Gruß

Zitat von min6zeichen:
Vielleicht ist meine Lösung zu einfach gedacht:
Windows 7 fragt nach, ob es eine Datei ersetzen soll, oder ein "(2)" dranhängen soll.
Um alle Dateien in allen Verzeichnissen auszuwählen benutze ich immer die Windows Suche im Explorer Fenster. oben rechts.
Gibt man dort ein Sternchen ein, bekommt man alle Dateien in allen Ordnern angezeigt.
Zusammen ergibt das:
per Windows Explorer auf D:\ gehen
oben rechts nach * suchen
strg-a
strg-c
Zielordner wählen
strg-v
auswählen, dass man die Entscheidung für alle weiteren Dateien auch nehmen will und das "beide dateien
behalten" anklicken.
Bitte warten ..
Mitglied: Skyemugen
11.10.2011 um 13:43 Uhr
Zitat von sk1412:
Hallo
Danke für den Lösungsansatz!
Nur was macht Windows 7, wenn die Datei ein 2. oder ein drittes Mal vorhanden ist.
Dann müsste die (2) durch eine (3) usw ersetzt werden.
Macht das Windows7 auch so ?

Jupp, allerdings weiß ich nicht, ob das auch per batch geschehen würde

Anyway, ich habe derzeit keine Luft für Batchskripteleien aber unsere Suchfunktion sollte dir so ziemlich alles bieten, was du dafür benötigst, wobei die Abfrage ob schon existiert + Abfrage, ob rename schon existiert + Abfrage ... halbe Endlosschleife in der Abhandlung unschön aber machbar und durchaus nicht zum ersten Mal hier genutzt.

greetz André
Bitte warten ..
Mitglied: der-blob
11.10.2011 um 14:32 Uhr
tagchen

ist zwar keine elgante lösung.... ich weis es gibt _BESSERE_ lösung aber auf die schnelle hab ich das hier.. - es klatscht bei jeder datei das Erstellungsdatum hinten dran.


01.
@echo off 
02.
set "Folder=D:\dummys\rename" 
03.
set dateiende=vbs 
04.
pushd "%Folder%" 
05.
for /f "eol=~ tokens=1* delims=~" %%i in ('dir /b /s *.%dateiende%') do call :arbeite "%%i" 
06.
popd 
07.
goto :eof 
08.
:arbeite 
09.
set "datei=%~dp1%~n1" 
10.
echo bin bei datei: %~dp1%~n1 
11.
for /f "delims= " %%p in ('dir %datei%.%dateiende% /t:c^|findstr /i /l "%~n1.%dateiende%"') do rename "%datei%.%dateiende%"  "%~n1_%%p.%dateiende%"
€: letzte zeile gibts bei google ;)


dann entweder per suche / copy alles zusammen klatschen, oder nen copy/xcopy/robocopy hinterher jage.


Gruß Blob
Bitte warten ..
Mitglied: bastla
11.10.2011, aktualisiert 27.07.2015
... und um Skyes Ansatz etwas zu konkretisieren:
01.
@echo off & setlocal 
02.
set "Ziel=D:\Zusammenfassung" 
03.
 
04.
md "%Ziel%" 2>nul 
05.
for /d %%i in (D:\20*) do for /f "delims=" %%a in ('dir /s /b "%%i\*.amr"') do call :ProcessFile "%%a" 
06.
goto :eof 
07.
 
08.
:ProcessFile 
09.
set "Zusatz=" 
10.
set /a Nr=2 
11.
:Loop 
12.
if not exist "%Ziel%\%~n1%Zusatz%%~x1" copy %1 "%Ziel%\%~n1%Zusatz%%~x1">nul & goto :eof 
13.
set "Zusatz= %Nr%" 
14.
set /a Nr+=1 
15.
goto :Loop
Mit der hier verwendeten Zeile 13 sollte (ist nämlich ziemlich ungetestet ) bei Bedarf als Zusatz ein Leerzeichen + eine laufende Nummer angefügt werden (wobei die Nummer 1 nicht vergeben wird, also im Fall des Falles die Dateien "clip003.amr", clip003 2.amr", clip003 3.amr" etc entstehen würden).

Um das Schema des Zusatzes zu variieren, könnte dieser zB per
set "Zusatz=(%Nr%)"
in Klammern angefügt werden (Leerzeichen davor nach Wunsch ergänzen) oder auch etwa mit
01.
:ProcessFile 
02.
set "Zusatz=" 
03.
set /a Nr=10002 
04.
:Loop 
05.
if not exist "%Ziel%\%~n1%Zusatz%%~x1" copy %1 "%Ziel%\%~n1%Zusatz%%~x1">nul & goto :eof 
06.
set "Zusatz=_%Nr:~-3%" 
07.
set /a Nr+=1 
08.
goto :Loop
immer als dreistellige Zahl (mit führenden Nullen) nach einem "_" hinzugefügt werden ...

Zu beachten wäre noch, dass wegen der Maske "20*" alle Ordner in "D:\", deren Name mit "20" beginnt (sowie deren ev Unterordner), als Quellen erfasst werden (und daher der Zielordner, falls er ebenfalls in "D:\" liegen sollte, keinesfalls ebenfalls mit "20..." benannt werden sollte).

Grüße
bastla
Bitte warten ..
Mitglied: bastla
11.10.2011 um 21:24 Uhr
@der-blob
Da es vermutlich auch das Änderungsdatum tun würde (und dieses wahrscheinlich auch aussagekräftiger als das Erstellungsdatum, das ja nur den Zeitpunkt der Kopie auf den Rechner widerspiegelt, wäre), könntest Du das über "%~t1" erhalten (müsstest aber zumindest noch den ":" aus der Uhrzeit eliminieren, oder besser, eine Umformung auf zB "JJJJ-MM-TT_HHMM" vornehmen) ...
set "datei=%~dp1%~n1"
ließe sich auch noch zu
set "datei=%~dpn1"
komprimieren

Grüße
bastla
Bitte warten ..
Mitglied: der-blob
12.10.2011 um 00:22 Uhr
Morgen / abend/ Nacht, was auch immer ;)


Das mit der erstellung auf den Rechner stimmt, habe ich in diesem moment garnicht dran gedacht. Aber dürfe theoretisch kein problem darstellen, da die daten schon "teilweise" strukturiert sind in den entsprechenden ordnern, und ich denke mal es immer zu den entsprechenden Daten "aktualisiert" wurde. Aber am aussagekräftigsten ist natürlich Bearbeitungs Datum / Zeit
.

Aber ich sagte ja es gibt eine elegantere / bessere lösung.

Und für meine begriffe bin ich mit meiner "dirty" lösung zufrieden ;) bin ja auch kein Batch Crack wie man anderer hier ;)

so und nun Adee mein Urlaub hat vor 20 Minuten begonnen :D
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ä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 Ordner anhand von Dateinamen erstellen und Dateien in Ordner kopieren (3)

Frage von getmoving zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
Ordner erstellen ll Datei hinein kopieren (1)

Frage von heyalice zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...