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

Vergleich der ersten 8 Stellen zweier Dateinamen in 2 verschiedenen Ordnern.

Frage Entwicklung Batch & Shell

Mitglied: wuggale

wuggale (Level 1) - Jetzt verbinden

15.06.2011, aktualisiert 15:47 Uhr, 2439 Aufrufe, 7 Kommentare

Hallo zusammen,

ich schreibe gerade an einer Batch, die folgendes abarbeiten soll:
Szenario - zwei Verzeichnisse, Arbeitsverzeichnis (Dir2) und Zielverzeichnis (Dir1). Im Arbeitsverzeichnis liegen diverse Dateien (*.doc, *.xls, *.xlsm) aus welchen 1 Dokument (PDF) erzeugt wird, welches in das Zielverzeichnis verschoben wird.
Gleichnamige Dateien müssen gelöscht werden, was auch geschieht. Ein Dateityp hat leider eine etwas andere Namenskonvention wo nur die ersten 8 Zeichen übereinstimmen, nicht der ganze Dateiname und hier liegt mein Problem.

Beispiel:
01-01111_17-03-2011.pdf (im Zielordner) Vergleichsname
01-01111_17-03-2011.doc (im Quellordner, wird auch gelöscht)
01-01111-01.xlsm (im Quellordner, soll auch gelöscht werden,) davon gibt es evtl. mehrere, welche an den letzten beiden Stellen hochgezählt werden. Eben das Problem.

und hier mein Ansatz:

01.
@echo off & setlocal EnableDelayedExpansion 
02.
 
03.
Set Dir1=X:\Ziel 
04.
Set Dir2=X:\Ablage1 
05.
set EXT1=pdf 
06.
set EXT2=doc 
07.
set EXT3=xlsm 
08.
set EXT4=xls 
09.
 
10.
FOR /F "delims=" %%i in ('dir /b /s "%Dir1%\*.%EXT1%"') do if exist "%Dir2%\%%~ni.%EXT2%" del "%Dir2%\%%~ni.%ext2%" ( 
11.
FOR /F "delims=" %%i in ('dir /b /s "%Dir1%\*.%EXT1%"') do if exist "%Dir2%\%%~ni.%EXT3%" del "%Dir2%\%%~ni.%ext3%" 
12.
FOR /F "delims=" %%i in ('dir /b /s "%Dir1%\*.%EXT1%"') do if exist "%Dir2%\%%~ni.%EXT4%" del "%Dir2%\%%~ni.%ext4%" 
13.
)
ist es möglich bei diesem Ansatz zu bleiben? Identische Dateien werden ja schon gelöscht.
01.
FOR /F "delims=" %%i in ('dir /b /s "%Dir1%\*.%EXT1%"') do if exist "%Dir2%\%%~ni-*.%EXT3%" @echo del "%Dir2%\%%~ni-*.%ext3%"
bin für jeden Hinweis und Tipp dankbar..

Gruß, Wuggale..
Mitglied: Friemler
15.06.2011 um 14:23 Uhr
Hallo Wuggale,

könnte so gehen (ungetestet):
01.
@echo off  
02.
 
03.
setlocal EnableDelayedExpansion 
04.
 
05.
 
06.
Set Dir1=X:\Ziel 
07.
Set Dir2=X:\Ablage1 
08.
set EXT1=pdf 
09.
set EXT2=doc 
10.
set EXT3=xlsm 
11.
set EXT4=xls 
12.
 
13.
FOR /F "delims=" %%i in ('dir /b /s "%Dir1%\*.%EXT1%"') do ( 
14.
  if exist "%Dir2%\%%~ni.%EXT2%" del "%Dir2%\%%~ni.%Ext2%" 
15.
  if exist "%Dir2%\%%~ni.%EXT3%" del "%Dir2%\%%~ni.%Ext3%" 
16.
   
17.
  set "Special=%%~ni" 
18.
  set "Special=!Special:~0,8!" 
19.
   
20.
  if exist "%Dir2%\!Special!-*.%EXT4%" del /q "%Dir2%\!Special!-*.%Ext4%" 
21.
)
Es wird eine Zwischenvariable erzeugt, die nur die ersten 8 Stellen des Namens der PDF-Datei enthält und daraus eine Suchmaske erstellt. Der Parameter /q bei dem DEL-Befehl verhindert Nachfragen, ob denn wirklich alle durch die Maske angegebenen Dateien gelöscht werden sollen.

Gruß
Friemler
Bitte warten ..
Mitglied: wuggale
15.06.2011 um 14:50 Uhr
hallo Friemler,

das ging ja im Raketentempo - leider klappt die letzte Zeile noch nicht, habe noch auf EXT3 angepasst, da ich momentan mit "xlsm" teste.

01.
if exist "%Dir2%\!Special!-*.%EXT3%" del /q "%Dir2%\!Special!-*.%Ext3%"
Was ich nicht ganz verstehe, warum man 2x die Variable "Special" definieren kann, da die doch schon in der 1. Definition belegt ist.

Gruß,
Wuggale
Bitte warten ..
Mitglied: bastla
15.06.2011 um 15:02 Uhr
Hallo wuggale!
Was ich nicht ganz verstehe, warum man 2x die Variable "Special" definieren kann, da die doch schon in der 1. Definition belegt ist.
Ich weiß zwar nicht ganz genau, was Du damit meinst, aber das Wesen einer Variablen ist eben, dass ihr Inhalt/Wert variabel ist ...

Grüße
bastla
Bitte warten ..
Mitglied: Friemler
15.06.2011 um 15:03 Uhr
Hallo wuggale,

warum die letzte Zeile nicht funktioniert habe ich nicht verstanden. Erkläre das doch bitte noch mal näher, evtl. inkl. Deinem Code.

Die Variable Special wird beim zweiten mal einfach mit einem veränderten Wert ihrer selbst belegt. Zuweisungen in Programmiersprachen sind keine mathematischen Gleichungen, deshalb funktioniert das.

Gruß
Friemler
Bitte warten ..
Mitglied: wuggale
15.06.2011 um 15:26 Uhr
Hallo Friemler, hallo Bastler,

ok, das mit der Variable "Special" glaube ich jetzt verstanden zu haben. Eigentlich sollten im Ordner DIR2 z.B. die Dateien:
01-01111-01.xlsm
01-01111-02.xlsm
usw.
gelöscht werden, da in DIR1 ein PDF 01-01111_17-03-2011.pdf liegt. Der Code von Friemler leicht geändert ist,

01.
@echo off   
02.
 
03.
setlocal EnableDelayedExpansion  
04.
 
05.
Set Dir1=X:\0.1 - Public Information\Ziel 
06.
Set Dir2=X:\0.1 - Public Information\Ablage1  
07.
set EXT1=pdf 
08.
set EXT2=doc  
09.
set EXT3=xlsm  
10.
set EXT4=xls  
11.
 
12.
FOR /F "delims=" %%i in ('dir /b /s "%Dir1%\*.%EXT1%"') do ( 
13.
  if exist "%Dir2%\%%~ni.%EXT2%" del /q "%Dir2%\%%~ni.%Ext2%" 
14.
  if exist "%Dir2%\%%~ni.%EXT3%" del /q "%Dir2%\%%~ni.%Ext3%" 
15.
 
16.
  set "Special=%%~ni" 
17.
  set "Special=!Special:~0,8!" 
18.
  if exist "%Dir2%\!Special!-*.%EXT3%" del /q "%Dir2%\!Special!-*.%Ext3%" 
19.
)
Grüße,
Wuggale
Bitte warten ..
Mitglied: wuggale
15.06.2011 um 15:30 Uhr
Hallo Friemler,

Kommando zurück .. es klappt, da waren noch Leerzeichen hinter der Definition der Extensions - habe das grade bemerkt .

vielen Dank für diese wahnsinnig schnellen Antworten hier, ein super Forum auf höchstem Niveau !!!
Bitte warten ..
Mitglied: Friemler
15.06.2011 um 15:48 Uhr
Hallo wuggale,

gern geschehen.

Tipp: Bei SET-Befehlen immer Anführungszeichen verwenden, also z.B. so:
set "EXT1=pdf"
Dann können solche Missgeschicke nicht passieren.

Gruß
Friemler
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Festplatten, SSD, Raid
Vergleich zweier SSD-Typen im Raid-10 für den Anwendungsfall SQL-Datenbank (8)

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

Informationsdienste
gelöst Dienstplan als ics bzw. ical-Datei zur Verfügung stellen (7)

Frage von FreshRawrr zum Thema Informationsdienste ...

Netzwerke
gelöst Zugriff auf Server von verschiedenen VLANs aus (7)

Frage von Kroeger02 zum Thema Netzwerke ...

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

Frage von cberndt 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 ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...