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

Zeichen und Zeichenkette aus Dateinamen automatisch entfernen

Frage Entwicklung Batch & Shell

Mitglied: DrAlcome

DrAlcome (Level 1) - Jetzt verbinden

03.09.2012 um 12:07 Uhr, 4821 Aufrufe, 9 Kommentare

Ich habe monatlich einen Haufen Auswertungen die ich in ein Programm importieren muss, dazu muss der Dateiname immer gleich sein. Die Auswertungen kommen automatisch, haben aber immer eine variierende Zeichenkette im Namen drin.

Ahoi zusammen!

Wie im Vorwort erwähnt, muss ich Daten von Programm A nach Programm B importieren. Programm B will die Dateinamen immer nach einem vorgegebenem Schema haben, Programm A exportiert die Daten aber immer mit Unterstrichen und variierenden Zeichenketten im Dateinamen.

Programm B will haben:
ABC-123-01 Erstes Sachgebiet - Abfrage 1.xml
ABC-123-02 Erstes Sachgebiet - Abfrage 25.xml

Programm A liefert:
ABC-123-01_Erstes_Sachgebiet_-_Abfrage_1.de-Tagesdatum-SessionID.xml
ABC-123-02_Erstes_Sachgebiet_-_Abfrage_25.de-Tagesdatum-SessionID.xml

In diesem Thread hier bin ich teilweise fündig geworden:
http://www.administrator.de/frage/Per-Batch-oder-VBS-Zeichen-aus-Datein ...

Die Unterstriche im Dateinamen konnte ich mit Hilfe dieses Scripts in Leerzeichen umwandeln, das hat schonmal gepasst. Nur die Zeichenkette ab dem Punkt ".de" bis zur Dateiendung müsste ich jetzt noch rauswerfen. Ich hätte ja, genau wie beim Unterstrich, die Zeichenkette durch "" ersetzen lassen können, da diese aber immer Variabel ist, kann ich das so im Script nicht mit angeben.

Vielleicht hat jemand einen Tipp wie ich das da raus kriege?
Mitglied: bastla
03.09.2012, aktualisiert 04.09.2012
Hallo DrAlcome!

Soferne "Erstes Sachgebiet" immer aus zwei Wörtern besteht, ließe sich da mit einem Batch etwa so machen:
for /f "delims=" %%i in ('dir /b "D:\Deine Dateien\ABC-*_*.xml"') do for /f "tokens=1-6 delims=_." %%a in ("%%~ni") do echo ren "D:\Deine Dateien\%%i" "%%a %%b %%c %%d %%e %%f%%~xi"
Das "echo" ist dazu da, die Umbenennung durch Anzeige des Befehles nur zu simulieren - wenn Du es weg lässt, werden die Namen tatsächlich geändert.

Grüße
bastla

[Edit] Fehlenden ' nachgetragen [/Edit]
Bitte warten ..
Mitglied: pieh-ejdsch
03.09.2012 um 21:47 Uhr
moin,

und als Variante in etwa so:
01.
setlocal disabledelayedexpansion 
02.
for %%i in ("D:\Deine Dateien\ABC-*_*.xml") do ( 
03.
  set "Name=%%~ni" 
04.
  setlocal enabledelayedexpansion 
05.
  for %%a in ("!Name:_= !" ) do (endlocal 
06.
    @echo ren "%%~i" "%%~na%%~xi" 
07.
) ) 
08.
 
Gruß Phil
Bitte warten ..
Mitglied: DrAlcome
04.09.2012 um 09:42 Uhr
Hallo,

schonmal Danke für eure Hilfe!
Mit der Variante von pieh-ejdsch funktioniert es soweit, allerdings habe ich mich oben verschrieben, im Dateinamen kommt nämlich nicht ".de" sondern "-de" vor.
Das "-de" bleibt jetzt immer noch im Namen stehen. Wenn ich das noch raus kriege bin ich wunschlos glücklich

Ich habe schon mit ein Paar Variationen hin und her gespielt, kriege es aber nicht raus.
Alternativ könnte ich mit dem VBS-Script aus dem anderen Thread (oben erwähnt) das "-de" durch "" ersetzen lassen, allerdings wäre es wesentlich eleganter das direkt in dem Batch-Script mit zu übergeben.
Bitte warten ..
Mitglied: bastla
04.09.2012 um 12:10 Uhr
Hallo DrAlcome!

Bei meiner Version sollte eigentlich das "de" auch bei einem Trennzeichen "_" verschwunden sein ...

Grüße
bastla
Bitte warten ..
Mitglied: DrAlcome
04.09.2012 um 13:24 Uhr
Hi Bastla,

wenn ich dein Script benutze, tut sich gar nichts...?!
Ich habe den "Deine Dateien"-Pfad natürlich abgeändert, aber er schreibt mir dann in der Kommandozeile einfach nur den Befehl raus, ändert aber nichts an der Datei.

Das Trennzeichen bei "de" ist ja auch ein "-" und kein "_", bzw. auch kein "." wie ich ursprünglich geschrieben hatte.
Bitte warten ..
Mitglied: bastla
04.09.2012 um 18:46 Uhr
Hallo DrAlcome!

Sorry - dass es ein "-" ist, hatte ich nicht erkannt - dafür hast Du aber, wie es aussieht, den Absatz unterhalb meines Code-Ansatzes übersehen ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
04.09.2012 um 19:58 Uhr
... aber wie auch immer - soferne mit "-de" eine verlässliche Position für das Aufteilen der Namen vorliegt, könntest Du es so versuchen:
01.
@echo off & setlocal 
02.
set "Trenn=-de" 
03.
 
04.
pushd "D:\Deine Dateien" 
05.
for /f "delims=" %%i in ('dir /b "ABC-*_*.xml"') do call :ProcessFile "%%i" 
06.
goto :eof 
07.
 
08.
:ProcessFile 
09.
set "Name=%~n1" 
10.
set "Name=%Name:_= %" 
11.
call set "Ent=%%Name:*%Trenn%=%%" 
12.
call set "NameNeu=%%Name:%Trenn%%Ent%=%%%~x1" 
13.
echo ren %1 "%NameNeu%" 
14.
goto :eof
- und ja, das "echo" hat noch immer den gleichen Zweck ...

Grüße
bastla
Bitte warten ..
Mitglied: DrAlcome
11.09.2012 um 11:56 Uhr
Hi Bastla,

sorry für die späte Rückmeldung, ich hatte letzte Woche leider keine Zeit mehr es zu testen da mein Kollege krank ist.
Ich werde es auf jeden Fall diese Woche noch ausprobieren und mich dann nochmal melden!
Bitte warten ..
Mitglied: DrAlcome
11.09.2012, aktualisiert um 15:28 Uhr
So, jetzt konnte ich es mal testen, und siehe da... es tut genau das was ich die ganze Zeit wollte!
Vielen Dank, Bastla (und natürlich auch pieh-ejdsch)!

Jetzt werde ich das Ganze noch so umbauen, dass es mir die Dateien direkt in den Ordner verschiebt, in dem sie für den Datenimport benötigt werden, aber das kriege ich noch alleine hin

P.S.: Achja, das mit dem Echo hatte ich schon richtig verstanden, es hatte aber trotzdem nix gemacht...
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Dateien automatisch anhand von 2 komplizierten Dateinamen-Strings verschieben (3)

Frage von cleverm zum Thema Batch & Shell ...

IDE & Editoren
USB STICK Datei AUTOMATISCH beim anschliessen auf fremden PC öffnen (9)

Frage von Jwanner83 zum Thema IDE & Editoren ...

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

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
gelöst Appx aus Image auslesen und entfernen (9)

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