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

Batch - Dateien umbenennen Verschieben und Dateien von mit bestimmten Zeichen im Dateinamen von der Umbenennung ausschliessen

Frage Entwicklung Batch & Shell

Mitglied: Sevensins

Sevensins (Level 1) - Jetzt verbinden

30.05.2007, aktualisiert 13.06.2007, 8070 Aufrufe, 10 Kommentare

Hallo Ich hab eine ziemlich profane Frage zum Umbenennen und Verschieben mehrerer Dateien. Also das Namensmuster der zu bennenenden Dateien ist Wie folgt...

DATEI: "Dateie20070521_123456.dbf"
jedoch gibt es auch eine sogenannte Peakdatei dazu die sich minimal von der eigentlich benötigten Datei unterscheidet.

Peakdatei: "Dateie20070521_123456pk.dbf"

Von den hier beschriebenen Dateien soll jedoch nur die Erste umbenannt werden und in ein vorgegebenes Verzeichnis(z.b. von C:\Daten nach D:\Archiv) verschoben werden.
Die Umbennung sollte So aussehn:
"Dateie20070521_123456.dbf" => "Dateie.dbf"

Ich bin schlicht und ergreifend zu blöd den Namens-String nach "pk" zu filtern und die Datei von der Umbennung auszuschliessen meine aber dass man das irgendwie sehr einfach lösen können müsste. Ich wär sehr glücklich wenn sich ein Batchexperte mal die 5 Minuten nimmt und mir ein Beispiel hier reinposted. Danke für Hilfe im Vorraus.


Ich kenne mich zwar mit Programmierung in versch. Sprachen aus möchte mich aber jetz für diese Aufgabe nich auch noch mit derSyntax auseinandersetzen. Einem Versierten Shell-Coder dürfte es allerdings sehr leicht fallen mein Problem zu lösen nehme ich an.

Meine Idee wenn ichs in VB machte wär das ganze mit nem Stringvergleich zu filtern dann umzubenennen nur möchte ich den Komfort einer Batch gerne benutzen da ich so die Verzeichnisse immer mal schnell anpassen kann und nicht erst das ding neu Kompilieren muss.
Mitglied: 8644
30.05.2007 um 09:06 Uhr
Moin,

wie wäre es denn mit

01.
ren Dateie???????????????.dbf ...
Psycho
Bitte warten ..
Mitglied: Sevensins
30.05.2007 um 09:38 Uhr
Ich verstehe was du mir damit sagen möchtest ganz gut glaub ich. Nur wär ich für ne Skizze dankbar. Ich hatte eigentlich gedacht ich les dann in der Antwort das Skript. Kann mir vorstellen dass mehr Leuete so ein Werkzeug gebrauchen können. Das mit dem ? hab ich auch schon probiert wobei dadurch aber keine Filterung nach pk stattfindet so wie ichs gern hätte....


Danke aber schonmal für die Mühe.
Bitte warten ..
Mitglied: Dani
30.05.2007 um 10:28 Uhr
Moin Sevensins,
dann kaue ich dir mal die Lösung vor. Also die Lösung ist klar, eine for - Schleife.

Hier mal Version 0.2:
01.
@echo off & setlocal 
02.
:: 
03.
set src_dir=c:\daten 
04.
set dest_dir=d:\archiv 
05.
 
06.
:: 
07.
for /f  %%a in ('dir /b *.dbf ^| findstr /v /l "pk"') do ( 
08.
move "%src_dir%\%%a" "%dest_dir%" 
09.
ren "%dest_dir%\%%a" "%dest_dir%\Dateie.dbf" 
10.
)
Ungetestete Skizze. Dir ist schon klar, dass diese Datei (die umbenannt wird) immer überschrieben wird. Mit findstr kann man Dateien ausschließen, die einen bestimmen String beinhalten. Vorsichtshalber erstmal beide Ordner sichern...


Gruß
Dani
Bitte warten ..
Mitglied: Sevensins
30.05.2007 um 10:56 Uhr
Hi. Finds klase dass Ihr mir helft. Vielen Dank dafür.

@ Dani : die Skizze funktioniert was das filtern und Verschieben angeht schon gut nur was mich ein wenig stutzig macht ist in der Skizze "Dateie.dbf"

Es ging mir ja darum dass es mehrere verschiedene Dateien Sind also DATEIE, DATEIB, DATEIC usw.... Im Grunde geht es nach dem Verschieben also darum die Dateien auf SECHS Zeichen abzukürzen... den Datumsstempel und andern Schmonz also zu entfernen.
Gibt es eine Möglichkeit die Länge von Vorne festzulegen?

ansonsten funktionieren sortieren und Verscheiben spitze.

Danke schon dafür...wenn du meine zusatzfrage noch lösen kannst dann wärs ja kaum auszuhalten
Bitte warten ..
Mitglied: 8644
30.05.2007 um 11:04 Uhr
wenn du meine zusatzfrage noch lösen kannst dann wärs ja kaum auszuhalten

@Dani: dann lass es lieber!

Psycho
Bitte warten ..
Mitglied: Dani
30.05.2007 um 11:13 Uhr
@psycho Dad
Hmmm....ich überlege gerade noch!

@Sevensins
Da fällt mir gerade eine Lösung ein:
01.
... 
02.
ren "%dest_dir%\%%a" "%dest_dir%\%%a:~0,6" 
03.
..
Ungetestet natürlich...ansonsten kann kommt die Lösung von einer unseren Experten!


Gruß
Dani
Bitte warten ..
Mitglied: Sevensins
30.05.2007 um 12:16 Uhr
klingt logisch dein Beispiel Dani nur leider funktioniert der Code nicht.


Habe deine Änderung sowohl innerhalb des Schleifendurchlaufs als auch nach der Schleife getestet da das die logischen Orte wären wo ich die Funktion rufen würde.


kann es sein dass "ren" nicht auf WinXp funktioniert? klingt blöd aber kann ja sein dass es ein 98 Kommando ist oderso.

Genauso möchte ich anmerken dass der Movebefehl syntaktisch sehr schön aussieht aber wie ich bei der Forenrecherce feststellen musste stirbt der Move-Beehl weg wenn man übers Netzwerk auf einen UNC-Pfad oder ein gemapped Laufwerk schieben möchte.

Ich weiss wie ich das hinbekomme wollte es aber nur für andere Leser meines Posts mal anmerken. Ich benötige nur noch Hilfe bei dieser "Ren"-Geschichte.

Danke und sorry dasses länger dauert als erwartet.
Bitte warten ..
Mitglied: Biber
30.05.2007 um 13:27 Uhr
Moin Sevensins,

Im Prinzip hat Dani Recht, aber auf dynamische Variablen (=die Zählvariablen einer FOR-Anweisung) lassen sich keine SubString-"Funktionen" anwenden unter der CMD.exe.
Das geht nur bei statischen Variablen (= alles, was mit "SET variable=whatever") im CMD-Environment eingerichtet ist.

Also:
Hier mal Version 0.3:


a) mit EnableDelayedExpansion
01.
@echo off & setlocal EnableDelayedExpansion 
02.
:: 
03.
set src_dir=c:\daten 
04.
set dest_dir=d:\archiv  
05.
:: 
06.
for /f  %%a in ('dir /b *.dbf ^| findstr /v /l "pk"') do ( 
07.
move "%src_dir%\%%a" "%dest_dir%" 
08.
Set "DateiName=%%~a" 
09.
ren "%dest_dir%\%%a" "!Dateiname:~0,6!.dbf" 
10.
)
a) mit ohne EnableDelayedExpansion
01.
@echo off & setlocal  
02.
Set dir=c:\daten 
03.
set dest_dir=d:\archiv  
04.
:: 
05.
for /f  %%a in ('dir /b *.dbf ^| findstr /v /l "pk"') do  Goto :MachwasMit "%%a" 
06.
goto :eof 
07.
 
08.
:MachwasMit Parameter1 ist der Dateiname + Extension (kein Pfad, kein Lw) 
09.
move "%src_dir%\%~1" "%dest_dir%" 
10.
Set "DateiName=%~n1" 
11.
ren "%dest_dir%\%Dateiname:~0,6%.dbf" 
12.
)
[Ungetestete Skizzen abgeleitet aus Danis v02.]

Gruss
Biber
Bitte warten ..
Mitglied: Biber
02.06.2007 um 23:13 Uhr
Moin sevensins,

ich habe zufällig gesehen, dass Du auf die Antworten zu Deiner Anforderung auch in einem anderen Forum seit dem 30.5. nicht mehr geantwortet hast.
Deshalb wollte ich mal nachfragen, ob Du die Lösung eventuell in einem dritten oder vierten Forum erhalten hast.

Und darum bitten, falls die vielen weltweit für Dich tätigen Heinzelmännchen eine Lösung gemeinschaftlich für Dich erarbeitet haben sollten, ob Du dieses finale Ergebnis eventuell auch hier veröffentlichen würdest.

Dann könnten wir den Thread nämlich mal schliessen...

Grüße
Biber
Bitte warten ..
Mitglied: Biber
13.06.2007 um 19:36 Uhr
Nachtrag zu meinem letzten "Dann könnten wir den Thread nämlich mal schliessen...":

Das können wir aber auch tun, wenn Du nicht mit mir sprechen magst. Da bin ich flexibel.

Beitrag geschlossen.

P.S. Wenn Du noch mal eine Frage in diesem Forum stellst, benutze lieber einen anderen Nick.
Biber
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...