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, 6159 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...