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 Datum versehen und xcopy

Frage Entwicklung Batch & Shell

Mitglied: RickTonalis

RickTonalis (Level 1) - Jetzt verbinden

24.06.2011 um 17:01 Uhr, 6911 Aufrufe, 13 Kommentare

Hallo liebe Forumsgemeinde

Ich möchte gern alle Bilder aus einem Ordner in einen anderen Ordner mitsamt der Ordnerstruktur kopieren. Dabei sollen die Bilder zusätzlich zu ihrem eigentlichen Namen mit einem Datum benannt werden.
xcopy übernimmt das kopieren recht unkompliziert.

xcopy C:\Quelle\*.jpg C:\Ziel\*.jpg /E /Y

Wenn ich jedoch die Dateien mit dem Datum versehen will:

xcopy C:\Quelle\*.jpg C:\Ziel\%date:~-10,2%_%date:~-7,2%_%date:~-4%*.jpg /E /Y

erhalte ich immer folgende Fehlermeldung:

"Zweiter Dateiname konnte nicht so erweitert werden, dass er zum ersten passt."

xcopy fügt das Datum dem Dateinamen nicht hinzu, sonder überschreibt den alten.
gibt es hierfür eventuell eine Lösung?
Über Antworten würde ich mich sehr freuen.
Mitglied: Skyemugen
24.06.2011 um 17:10 Uhr
Aloha und willkommen im Forum,

du benötigst dafür eine for-Schleife, wenn du fit bist, kannst du dir mit Hilfe von for /? und diesem Tutorial zur FOR-Schleife die Sache ganz einfach selbst hinzaubern

Solltest du Probleme oder Fragen dann dazu noch haben, einfach melden.

greetz André
Bitte warten ..
Mitglied: 60730
24.06.2011 um 17:12 Uhr
moin,

*.jpg
C:\Ziel\%date:~-10,2%_%date:~-7,2%_%date:~-4%*.jpg
kann ja nicht, du mußt eine Schleife drumrum zimmern.

for /R C:\Quelle\ %a in (*.jpg) do echo xcopy %a.jpg C:\Ziel\%date:~-10,2%_%date:~-7,2%_%date:~-4%%~nxa /E /Y

Gruß

edit


@ Skye - oda so...
wobei das ganze natürlich ziemlich schräg ist..
  • läuft diese Zeile an zwei verschiedenen Tagen, gibts doppelte gemoppelte, an drei Tagen usw usf.....
/edit
Bitte warten ..
Mitglied: Skyemugen
24.06.2011 um 17:15 Uhr
Aloha T-Mo,

was' mit dir heute los? Nimmst gleich die Arbeit ab und das bei einem Einzeiler? Tze tze tze, so kenne ich dich gar nicht *fg* - so bleibt da die Lernerfahrung für den TE?

greetz André
Bitte warten ..
Mitglied: 60730
24.06.2011 um 17:18 Uhr
[1/2OT]
Zitat von Skyemugen:
Aloha T-Mo,

was' mit dir heute los? Nimmst gleich die Arbeit ab und das bei einem Einzeiler? Tze tze tze, so kenne ich dich gar nicht
*fg* - so bleibt da die Lernerfahrung für den TE?

greetz André

  • Hallo
  • incl. Beispiel, was er bereits hat
  • kein @echo off
  • kein linksfalschfehler

... da kann man schonmal als alter einzeller nen einzeiler opfern

[/1/2OT]
Bitte warten ..
Mitglied: RickTonalis
24.06.2011 um 17:21 Uhr
Um Gottes Willen!
Ihr seid ja bombastisch schnell.
War nur einmal im Keller und schon ist da ne Lösung!
Beindruckend.
Mit tiefen Verneigungen
Vielen Dank
Bitte warten ..
Mitglied: Skyemugen
24.06.2011 um 17:22 Uhr
[¾ OT] Aber er hat keine Codeformatierung genutzt Skandal![/¾ OT]
Bitte warten ..
Mitglied: bastla
24.06.2011 um 17:28 Uhr
@T-Mo
Etwas stimmiger (vor allem, wenn dann das "echo" weg sein wird), wäre es so:
for /R C:\Quelle\ %a in (*.jpg) do echo xcopy "%a" "C:\Ziel\%date:~-10,2%_%date:~-7,2%_%date:~-4%_%~nxa*" /Y
Auch wäre das Zusammensetzen (und Speichern in einer Variablen) des Datums vorweg zu empfehlen ...

Grüße
bastla
Bitte warten ..
Mitglied: RickTonalis
24.06.2011 um 17:48 Uhr
Hallo nochmal,
leider läuft es so noch nicht.
Ich kann auch keinen Fehler auslesen, weil mein "pause" am Ende der Datei nichts bewirkt.
Habt Ihr vielleicht noch einen Tipp?
Bitte warten ..
Mitglied: bastla
24.06.2011 um 19:26 Uhr
Hallo LePimpon!

Die Zeile war auch zur Direkteingabe in der CMD-Shell gedacht - wenn Du sie in einem Batch verwenden willst, musst Du die Prozentzeichen der Laufvariablen verdoppeln:
01.
@echo off & setlocal 
02.
set "Quelle=C:\Quelle" 
03.
set "Ziel=C:\Ziel" 
04.
set "Typ=jpg" 
05.
 
06.
set "Datum=%date:~-10,2%_%date:~-7,2%_%date:~-4%" 
07.
for /R "%Quelle%" %%a in (*.%Typ%) do echo xcopy "%%a" "%Ziel%\%Datum%_%%~nxa*" /Y
Solange das "echo" in der letzten Zeile steht, wird nur der Kopierbefehl angezeigt, aber nicht ausgeführt ...
Was es übrigens mit "%%~nxa" (Kurzform für "%%~na%%~xa") auf sich hat, erfährst Du mit "for /?" (falls Du lange genug durchhältst ) ...

Grüße
bastla

P.S.: Das Datum würde ich im Zweifelsfall "JJJJ-MM-TT" schreiben ...
Bitte warten ..
Mitglied: RickTonalis
24.06.2011 um 19:51 Uhr
Super, vielen Dank.
Mit dem Datum hast du Recht, das lässt sich wesentlich besser sortieren. Es gibt nur noch ein Problem. Vielleicht hatte ich das nicht ganz klar ausgedrückt. Die Bilder müssten mit der entsprechenden Ordnerstruktur kopiert werden. Der Einzeiler vom Anfang übernahm das, überschrieb aber wie gesagt leider die Dateinamen, wenn ich diese erweitern wollte.
for /? wird schon ganz gebannt gelesen...
Kann ich für die jeweiligen Ordner evtl einen Teilstring von %%~dpa benutzen? Wenn ja, wie lese ich den aus?
Grüße
LePimpon
Bitte warten ..
Mitglied: bastla
24.06.2011 um 20:06 Uhr
Hallo LePimpon!

Das sollte sich auch noch hinbekommen lassen:
01.
@echo off & setlocal 
02.
set "Quelle=C:\Quelle" 
03.
set "Ziel=C:\Ziel" 
04.
set "Typ=jpg" 
05.
 
06.
set "Datum=%date:~-4%_%date:~-7,2%_%date:~-10,2%_" 
07.
for /R "%Quelle%" %%a in (*.%Typ%) do set "Quellpfad=%%~dpa" & call :ProcessFile "%%a" 
08.
goto :eof 
09.
 
10.
:ProcessFile 
11.
call set "Zielpfad=%%Quellpfad:%Quelle%=%Ziel%%%" 
12.
echo xcopy %1 "%Zielpfad%%Datum%_%~nx1*" /EY 
13.
goto :eof
Da hier eine String-Ersetzung im Dateipfad erfolgt (%Quelle% wird durch %Ziel% ersetzt - siehe dazu "set /?"), kann nicht mit der Schleifenvariablen (%%a) gearbeitet werden, sondern es muss eine "gewöhnliche" Variable (%Quellpfad%) verwendet werden. Diese wird in der Schleife erstellt und dann in einem Unterprogramm verarbeitet.

Diesem Unterprogramm wird auch der komplette Dateipfad "%%a" übergeben. Da sich das Unterprogramm wie ein weiterer Batch verhält, kommt dort die übergebene Variable "%%a" als Parameter "%1" an.

Grüße
bastla
Bitte warten ..
Mitglied: RickTonalis
24.06.2011 um 20:33 Uhr
Also, was soll ich sagen. Vielen herzlichen Dank.
Funktioniert perfekt. Ein wunderschönes Wochenende wünsche ich!
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Microsoft Office
Alle CSV-Dateien mit neuem Datum in einem Ordner mit einem VBA Makro einlesen (1)

Frage von parlermo2102 zum Thema Microsoft Office ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Windows Server
Server sehr langsam bei vielen kleinen Dateien (5)

Frage von MichiBLNN zum Thema Windows Server ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...