Top-Themen

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 Batch, Dateien nach Endung suchen, kopieren und ggf umbenennen

Mitglied: jufe87

jufe87 (Level 1) - Jetzt verbinden

17.04.2009, aktualisiert 14:43 Uhr, 13426 Aufrufe, 9 Kommentare

Hallo!
Ich sitze schon eine ganze weile an dieser Batch-Datei, bekomme allerdings kein vernünftiges Ergebnis.

C:\ (mit Unterordnern) Soll nach *.blabla Dateien durchsucht werden und alle gefundenen sollen nach D:\ kopiert werden.
Dabei kann es auch sein, dass Dateinamen doppelt vorkommen, diese sollen dann ggf. geändert werden, sodass keine Datei überschrieben wird.
Ich habe mir das so überlegt, dass ich Die Uhrzeit mit milisekunden anhänge, damit es zu immer Unterschiedlichen namen kommt.
Dies klappt allerdings nicht, da pro Batch-Aufruf Immer die Selbe Zahl genommen wird.

Hier mein bisheriger code:

[code]
@echo off
REM Variablen Setzen
set dir=c:\
REM !!BITTE ENTSPRECHEND ANPASSEN!!
set file=*.blabla
set endung=.blabla
set pfad=D:
REM Erstellung der Zeitvariable
set h=%time:~0,2%
set m=%time:~3,2%
set s=%time:~6,2%
set ms=%time:~9,2%
set zeit=%date%_%h%h%m%m%s%s%ms%ms
REM Sucht nach Dateien und kopiert diese in einen Unterordner im oben angegebenen
REM Verzeichnis. Der Name des Unterordner Setzt sich aus
REM "Dateiname_Dateiendung_Datum_Uhrzeit mit milisekunde" zusammen.
for /r "%dir%" %%i in ("%file%") do (
if exist %%i xcopy "%%i" "%pfad%\%%~ni%endung%_%zeit%\" /V /S /I)
pause
[/code]

Jemand eine Idee?
Mitglied: LotPings
17.04.2009 um 15:19 Uhr
Klar, du setzt die Zeit statisch ausserhalb der Schleife einmal in die Variable.
Wie soll sich denn der Inhalt innerhalb der Schleife ändern?
Das ist doch kein Funktion die es in Batch eh nicht gibt.

Deine If Abfrage ist übrigends Lötzinn, deine Quell-Datei existiert immer.
Du kannst einen Teil in eine Subroutine verlagern, etwas so:

code übrigends mit spitzen Klammern.
01.
@echo off&setlocal EnableDelayedExpansion 
02.
set dir=c:\ 
03.
set file=*.blabla 
04.
set endung=.blabla 
05.
set pfad=D: 
06.
REM Sucht nach Dateien und kopiert diese in einen Unterordner im oben angegebenen 
07.
REM Verzeichnis. Der Name des Unterordner Setzt sich aus 
08.
REM "Dateiname_Dateiendung_Datum_Uhrzeit mit milisekunde" zusammen. 
09.
for /r "%dir%" %%i in ("%file%") do Call :Sub "%%~fi" "%%~ni" 
10.
pause 
11.
goto :EOF 
12.
:Sub 
13.
REM Erstellung der Zeitvariable 
14.
set zeit=%date%_%time::=% 
15.
set Ziel=%pfad%\%~2%endung% 
16.
if exist "%Ziel%" set Ziel=%Ziel%_%Zeit% 
17.
echo xcopy %1 "%Ziel%" /V /S /I
Ungestestet, wenn die Ausgabe richtig erscheint, das echo vor dem xcopy Befehl entfernen.

HTH

Gruß
LotPings
Bitte warten ..
Mitglied: hajowe
17.04.2009 um 15:30 Uhr
ja das ist was dran Zeit ausserhalb der Schleife verändert sich natürlich nicht.
Bitte warten ..
Mitglied: Biber
17.04.2009 um 15:48 Uhr
<OT>
Zitat von hajowe:
ja das ist was dran Zeit ausserhalb der Schleife verändert sich natürlich nicht.
Allerdings sind die Änderungen ausschließlich innerhalb einer Zeitschleife genauso unbefriedigend.
Siehe Und täglich grüßt das Murmeltier.

Schönes Wochenende
Biber
</OT>
Bitte warten ..
Mitglied: jufe87
17.04.2009 um 16:02 Uhr
Das ist es leider nur fast.
So werden Dateien zum Teil doppelt kopiert, was ich allerdings nicht so recht verstehe.
Bitte warten ..
Mitglied: LotPings
17.04.2009 um 17:01 Uhr
Zitat von jufe87:
Das ist es leider nur fast.
So werden Dateien zum Teil doppelt kopiert, was ich allerdings nicht
so recht verstehe.

Naja, er kopiert ja erst wenn der echo Befehl raus ist, das eine Datei schon da ist kann also (noch) nicht passieren. Habs jetzt getestet und noch angepasst, durch die Zielnamensänderung kommt sonst jedesmal die Frage ob Ziel eine Datei oder ein Verzeichnis ist.

01.
@echo off&setlocal 
02.
set dir=C:\ 
03.
set file=*.blabla 
04.
set endung=.blabla 
05.
set pfad=D:\ 
06.
for /r "%dir%" %%i in ("%file%") do Call :Sub "%%~fi" "%%~ni" 
07.
Pause 
08.
goto :EOF 
09.
:Sub 
10.
set zeit=%date:.=%_%time::=% 
11.
set Ziel=%pfad%\%~2 
12.
if exist "%Ziel%%endung%" set Ziel=%Ziel%_%Zeit:,=-% 
13.
Type NUL>"%Ziel%%endung%" 
14.
xcopy %1 "%Ziel%%endung%" /F /Y /C /H /V
Gruß
LotPings
Bitte warten ..
Mitglied: Biber
17.04.2009 um 17:03 Uhr
Zitat von jufe87:
Das ist es leider nur fast.
So werden Dateien zum Teil doppelt kopiert, was ich allerdings nicht so recht verstehe.
Moin jufe87,

willkommen im Forum.
Dieser Effekt wird durch den XCopy-Schalter "/s" wie in "works as designed" bewirkt.
Bei jedem
xcopy %1 "%Ziel%" /V /S /I
... wird ja die gefundene Datei %1 und alle gleichnamigen Quell-Dateien in Unterverzeichnissen darunter kopiert.
Aber die Dateien in Unterverzeichnissen triffst Du ja ohnehin später wieder im weiteren Verlauf der FOR /R-Rekursiv-Tour und kopierst sie nochmals.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
17.04.2009 um 17:36 Uhr
@LotPings
durch die Zielnamensänderung kommt sonst jedesmal die Frage ob Ziel eine Datei oder ein Verzeichnis ist.
Dem kannst Du vorbeugen, indem Du am Ende des Zieles noch einen Stern anfügst:
xcopy %1 "%Ziel%%endung%*" /F /Y /C /H /V
Grüße
bastla
Bitte warten ..
Mitglied: LotPings
17.04.2009 um 17:54 Uhr
Zitat von bastla:
Dem kannst Du vorbeugen, indem Du am Ende des Zieles noch einen Stern anfügst:

Danke bastla,
den kannte ich nicht (mehr, Alzheimer lässt grüßen

@Biber
das passiert wenn kann Codeteile ungeprüft übernimmt,
aber meine Änderung erschlägt auch das, den /S hatte ich rausgenommen.

Gruß
LotPings
Bitte warten ..
Mitglied: jufe87
20.04.2009 um 08:13 Uhr
Also nach kurzem Test scheints super zu funktionieren.

Besten Dank!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Datei-Endungen, Listen und Sortierung (Batch)

gelöst Frage von clragonBatch & Shell5 Kommentare

Hallo Leute, Ich habe ein kompliziertes ( so wie eigentlich immer, und kompliziert natürlich subjektiv ) Effizienz-Problem. Ich versuch ...

Batch & Shell

Mittels Batch Ordner umbenennen und Dateien kopieren

gelöst Frage von held.christophBatch & Shell12 Kommentare

Guten Tag allerseits Ich bin absoluter Leihe und konnte Dank mehr oder weniger grossen Suche in den Foren bereits ...

Windows 7

Windows 7 Suche in Dateien ohne Endung

gelöst Frage von markymark76Windows 74 Kommentare

Hallo. Ein Windows 7 (64)-System verwaltet für eine Fräsmaschine die erstellten Programme übers Netzwerk: Die erstellten Fräsprogramme werden auf ...

Batch & Shell

Verzeichniss überwachen Datei kopieren und umbenennen

gelöst Frage von fischle63Batch & Shell6 Kommentare

Hallo, Habe folgendes Problem: In einem Verzeichniss sind Dateien mit dem Suffix ".nd" enthalten. Bsp. "00000010.nd" Ich brauche eine ...

Neue Wissensbeiträge
CMS
Erneut kritische Zero-Day-Lücke in Drupal
Tipp von Reini82 vor 3 StundenCMS

Laut einem Bericht auf t3n gibt es eine Schwere Sicherheitslücke in Drupal die auch schon ausgenutzt wird. Betroffen sind ...

Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 1 TagSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 1 TagWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 1 TagiOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Heiß diskutierte Inhalte
Windows Server
Alten DC entfernen
gelöst Frage von smartinoWindows Server27 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...

Ausbildung
Wie gelingt ein guter Einstieg in die FiSi-Ausbildung? (Umschulung)
Frage von SiAnKoAusbildung26 Kommentare

Schönen guten Tag, ich bin SiAnKo und habe seit dem 1.04.2018 eine Umschulung als FiSi angefangen. Ich möchte natürlich ...

Batch & Shell
Mit Powershell den Inhalt einer Excel mit einer Text Datei abgleichen
gelöst Frage von Bommi1961Batch & Shell21 Kommentare

Hallo zusammen, ich muss den Inhalt einer Excel Datei (Mappe1) mit dem Daten einer Text Datei abgleichen. Die Daten ...

Windows 10
Unter Windows 10 Home 64Bit (1709) kommt Fehler beim Aufruf von verschiedenen Systemprogrammen wie z.B. Gerätemanager
Frage von bitshopWindows 1017 Kommentare

Hallo, beim meinem Onkel haben wir seit längerem das Problem, dass z.B. beim Aufruf des Gerätemanagers eine Fehlermeldung kommt ...