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

Ersten 10 Stellen eines Dateinamen mittels Batch Datei überprüfen

Frage Entwicklung Batch & Shell

Mitglied: Raedsche

Raedsche (Level 1) - Jetzt verbinden

23.04.2009, aktualisiert 12:35 Uhr, 6271 Aufrufe, 11 Kommentare

Hallo zusammen

Leider habe ich für mein Problem noch keine Lösung gefunden.

Ich muss es irgendwie schaffen, das wenn Dateien vom einen in den anderen Ordner kopiert werden, nur die ersten zehn Stellen der Dateinamen verglichen werden. Sind diese ersten zehn Stellen gleich, soll die Datei überschrieben werden.
Alles andere was in dem Dateinamen hinter den ersten zehen Stellen folgt soll keine Rolle spielen.

Weiss jemand, wie ich das mit einer Batch-datei umsetzen kann?

Grüße

Raedsche
Mitglied: LotPings
23.04.2009 um 12:40 Uhr
Hallo Raedsche,

Gehen tut fast alles
Aber gib mal ein Beispiel der Dateinamen.

Wenn nur die ersten 10 Stellen verglichen werden und der Rest ungleich ist Überschreibst du ja eigentlich nicht. Soll der andere Dateiname dann gelöscht werden ?

Gruß
LotPings
Bitte warten ..
Mitglied: Raedsche
23.04.2009 um 13:07 Uhr
Hallo LotPings

Gut das fast alles geht

Der Dateiname besteht bei den ersten zehn Stellen aus Ziffern (Barcode). Hinter diesem steht dann der Bearbeiter des Dokuments und dann kommt Datum und Uhrzeit.
z.B. 0000675677 - Müller - 2009-04-23.pdf

Wenn das Dokumnet mit dem selben Barcode jetzt nochmal abgelegt wird, unterscheidet sich auf alle Fälle das Datum. Daher kann ich das leider nicht komplett einfach überschreiben.

Kommt jetzt also der Barcode nochmal vor, sollen die ersten zehn Ziffern verglichen werden und wenn diese gleich sind, soll das alte Dokument geslöscht werden.

Jetzt soweit verständlich?

Gruß

Raedsche
Bitte warten ..
Mitglied: bastla
23.04.2009 um 13:27 Uhr
Hallo Radesche!

Dann etwa so (ungetestet):
01.
@echo off & setlocal 
02.
set "Von=D:\Quellordner" 
03.
set "Maske=*.pdf" 
04.
set "Nach=D:\Zielordner" 
05.
 
06.
for %%i in ("%Von%\%Maske%") do call :ProcessFile "%%i" 
07.
goto :eof 
08.
 
09.
:ProcessFile 
10.
set "Name=%~n1" 
11.
echo del "%Nach%\%Name:~,10%*%~x1" 
12.
echo copy %1 "%Nach%" 
13.
goto :eof
Zur Sicherheit steht vor dem Lösch- (und auch vor dem Kopier-) Befehl ein "echo" - damit wird die Aktion nur angezeigt, aber nicht ausgeführt. Wenn die Testergebnisse vernünftig aussehen, das "echo" einfach entfernen (und am Ende des "copy"-Befehles noch ein ">nul" anfügen) ...

Grüße
bastla

[Edit] * in Zeile 11 nachgereicht [/Edit]
Bitte warten ..
Mitglied: LotPings
23.04.2009 um 13:44 Uhr
Hallo bastla,,
um alle Namen mit gleicher Barcodenummer zu löschen fehlt IMO ein Stern
echo del "%Nach%\%Name:~,10%*.pdf" 
Gruß
LotPings
Bitte warten ..
Mitglied: Raedsche
23.04.2009 um 13:48 Uhr
So, werde das ganze gleich mal ausprobieren. Werde mich dann mit dem Ergebnis melden.

Danke schonmal für die Mühe.

Gruß

Raedsche
Bitte warten ..
Mitglied: bastla
23.04.2009 um 13:50 Uhr
@LotPings
Ja, leider (da stand zuerst %Maske%, aber mit *%~x1 ist's flexibler - beim Ändern ist dann der "*" unter dem Tisch gelandet) - ich korrigiere das oben auch noch.

Grüße
bastla
Bitte warten ..
Mitglied: Raedsche
23.04.2009 um 14:14 Uhr
Also.. Habe es gerade getestet.

meine Batchdatei sieht nun folgendermaßen aus:

off & setlocal
set "Von=D:\ordner2"
set "Maske=*.pdf"
set "Nach=D:\ordner1"
for %%i in ("%Von%\%Maske%") do call :ProcessFile "%%i"
goto :eof
:ProcessFile
set "Name=%~n1"
del "%Nach%\%Name:~,10%*%~x1"
copy %1 "%Nach%" ">nul"
goto :eof

(Echo benötigen wir nicht, da ich auf einem Testsystem unterwegs bin)

Das Problem ist jetzt aber er, das er zwar die Ordner vergleicht, die Datei aber ion Ordner 2 liegen bleibt.
Ziel ist es aber, das die Datei dann in Ordner 1 ersetzt wird.

Möglich?

Gruß Raedsche
Bitte warten ..
Mitglied: bastla
23.04.2009 um 14:23 Uhr
Hallo Raedsche!

"move" statt "copy" (oder ein "del" nachreichen)

Grüße
bastla

P.S.: Die Anführungszeichen um ">nul" waren nur zur Kennzeichnung/Abgrenzung im Text gedacht und gehören da nicht hin ...
Bitte warten ..
Mitglied: LotPings
23.04.2009 um 14:24 Uhr
Ändere
01.
copy %1 "%Nach%" ">nul" 
um in
01.
move %1 "%Nach%" >NUL 
Gruß
LotPings
Bitte warten ..
Mitglied: bastla
23.04.2009 um 14:27 Uhr
[OT]
@LotPings
Schön langsam könnten wir einen Dienstplan erstellen ...
[/OT]

Grüße
bastla
Bitte warten ..
Mitglied: Raedsche
23.04.2009 um 14:29 Uhr
Danke Leute.

Habs jetzt mit einem Dokument mal schnell getestet und es funktioniert. Werde das ganze jetzt mal mit einigen mehr Dokumenten test und wenns dann funktioniert ist es perfekt.

Dank euch vielmals!

Gruß

Raedsche
Bitte warten ..
Ähnliche Inhalte
Entwicklung
gelöst Dateiname auf bestimme Zeichenfolge überprüfen? (8)

Frage von matzetto zum Thema Entwicklung ...

Batch & Shell
gelöst Teile eines Dateinamens ändern mit Batch Datei (4)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateinamen mit Batch-Datei ändern - Problem (9)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Sonstige Systeme
Batch Dateinamen zerlegen (5)

Frage von Mummel zum Thema Sonstige Systeme ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(2)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Netzwerkprotokolle
gelöst Leiten "dumme" Switches VLAN-Tags mit durch? (26)

Frage von coltseavers zum Thema Netzwerkprotokolle ...

Windows Server
gelöst Neues KB für W10 1607 und W2K16 wieder mal nicht im WSUS 3.0, hat das noch jemand? (16)

Frage von departure69 zum Thema Windows Server ...

Netzwerkgrundlagen
Kann auf Freigabe nicht Zugreifen (14)

Frage von leon123 zum Thema Netzwerkgrundlagen ...

Router & Routing
FTTH bzw FTTB Router (13)

Frage von ukulele-7 zum Thema Router & Routing ...