Top-Themen

Aktuelle Themen (A bis Z)

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, 5109 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 ..
Ähnliche Inhalte
Batch & Shell
Bestimmte Zeichen per Batch aus Dateinamen entfernen
gelöst Frage von wollebeeBatch & Shell6 Kommentare

Ich bekomme Dateien, bei denen ich automatisch per Batch den Dateinamen ändern möchte. Nun besteht der erste Teil des ...

Batch & Shell
Zeichen aus einem String entfernen
gelöst Frage von JimStarBatch & Shell3 Kommentare

Guten Tag zusammen, ich möchte folgendes tun: In einer Textdatei, steht eine Zeile. Diese beinhaltet z.B.: Diese Textzeile muss ...

Batch & Shell
Leerzeichen aus Dateinamen entfernen
gelöst Frage von noob-xBatch & Shell3 Kommentare

Hallo Profis, ich möchte bei vielen Dateien in einem Ordner die Leerzeichen aus den Dateinamen entfernen Dateien sehen so ...

Batch & Shell
Linux: wie finde ich "unmögliche" zeichen in dateinamen?
gelöst Frage von klausphBatch & Shell5 Kommentare

guten tag nach stundenlangen studium von "dem kofler" und anderen grundlagenwerken weiss ich nicht weiter. es geht um folgendes: ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 9 StundenWindows 101 Kommentar

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 11 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server12 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server12 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Netzwerkgrundlagen
Laufwerkszuordnung mit zwei IPs
Frage von Alex29Netzwerkgrundlagen11 Kommentare

Hallo in die Runde, Ich als Hobbyadmin hätte mal wieder eine Frage an die Profis. Ich habe ein Netzwerk ...