sommerpalme73
Goto Top

Punkte aus Dateinamen per Batch entfernen

Hallo ihr Lieben,

ich bin ziemlicher Anfänger und habe leider keine Ahnung von Skript-Sprache. Nun soll ich aber bei uns Dateien umbenannt werden und zwar so, dass die Punkte aus dem Dateinamen entfernt werden. Die Dateinamen sind immer gleich aufgebaut. Und zwar wie folgt: z.zzzz.zzzzzz.z_zzzz.pdf
Die ersten 3 Punkte sollen entfernt werden, der Punkt für die Dateiendung natürlich nicht. Ich hab mich jetzt mal hier um gesehen und hab etwas gefunden und versucht das umzuschreiben:

::-- snipp RenPdfs.bat
:: ALT: Y.YYYY.YYYYYY.Y_YYYY.PDF --> Dateimaske ?.????.??????.?_????.PDF
:: in NEU: YYYYYYYYYYYY.PDF
@echo off & setlocal enableDelayedExpansion
For %%a in ( ?.????.??????.?_????.PDF) do Set "Name=%%~na" & ren "%%a" "!name:.=!.PDF"
::-- snapp RenPDFs.bat

Leider war der Erfolg sehr mäßig, sprich gar nicht da. Die Dateien wurden nicht umbenannt. Die Batch-Datei habe ich in dem Verzeichnis mit Admin-Rechten ausgeführt, in dem auch die pdf-Dateien liegen.

Kann mir vielleicht jemand helfen und sagen, wie ich es richtig schreiben muss?

Vielen Dank schon mal für die Mühe.

Mit freundlichen Grüßen
Tamara Janle

Content-Key: 275510

Url: https://administrator.de/contentid/275510

Printed on: April 24, 2024 at 07:04 o'clock

Member: Snowman25
Solution Snowman25 Jun 24, 2015, updated at Jun 26, 2015 at 09:44:28 (UTC)
Goto Top
Hallo Tamara,

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "delims=" %%i IN ('DIR /b') DO (  
	SET a=%%~ni
	SET b=%%~xi
	ECHO !a:.=!!b!
	REM REN "%%i" "!a:.=!!b!"  
)

Wenn du in Zeile 7 das REM entfernst, werden von ALLEN Dateien im aktuellen Verzeichnis die Punkte entfernt aber die Endungen beibehalten.
Original Ergebnis
ab.cd.ef.gh.bmp abcdefgh.bmp
test.bat test.bat

Gruß,
@Snowman25

€dit:
Angepasst, damit auch Leerzeichen im Dateinamen ordentlich verarbeitet werden.
Member: Sommerpalme73
Sommerpalme73 Jun 25, 2015 at 06:43:27 (UTC)
Goto Top
Hallo Snowman25,

vielen Dank für die Hilfe. Aber irgendwie bin ich zu blöd. Ich habe jetzt in dem Verzeichnis, in dem die pdf-Dateien liegen, eine BATCH-Datei mit deinem Skript erstellt und also Admin laufen lassen. Es sollen dann irgendwie gefüllte tausende Dateien geändert werden, nur nicht die, die ich möchte:

webcheck .dll
WebClnt .dll
webio .dll
webservices .d
wecapi .dll
wecsvc .dll
wecutil .exe
wer .dll
werconcpl .dll
wercplsupport
werdiagcontrol
WerFault .exe
WerFaultSecure
wermgr .exe
wersvc .dll
werui .dll
wevtapi .dll
wevtfwd .dll
wevtsvc .dll
wevtutil .exe
wextract .exe
WF .msc
wfapigp .dll
WfHC .dll
wfp

usw.

Was habe ich denn jetzt noch falsch gemacht? Muss ich an deinem Skript noch was anpassen?

Liebe Grüße
Member: TlBERlUS
TlBERlUS Jun 25, 2015 at 06:55:07 (UTC)
Goto Top
Zitat von @Sommerpalme73:

Hallo Snowman25,

vielen Dank für die Hilfe. Aber irgendwie bin ich zu blöd. Ich habe jetzt in dem Verzeichnis, in dem die pdf-Dateien
liegen, eine BATCH-Datei mit deinem Skript erstellt und also Admin laufen lassen. Es sollen dann irgendwie gefüllte tausende
Dateien geändert werden, nur nicht die, die ich möchte:

Es dürfte relativ egal sein, wo die Batch liegt, du musst ihr allerdings noch sagen wo sie die Dateien bearbeiten soll
z.B. so:
<code/>cd DeinPfad
Member: Sommerpalme73
Sommerpalme73 Jun 25, 2015 at 07:12:38 (UTC)
Goto Top
Hallo Snowmann25,

ich habs jetzt so gemacht:

@echo OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "delims=" %%i IN ("Z:\Farbscannen\Uebergabe\saperionlhk\sap_debitor\bak\") DO (
SET a=%%~ni
SET b=%%~xi
ECHO !a:.=!!b!
REN "%%i" "!a:.=!!b!"
)

Allerdings bekomme ich dann folgende Meldung:
ECHO ist ausgeschaltet (OFF).
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess

Wenn ich es so mache mit dem CD am Anfang:

cd Z:\Farbscannen\Uebergabe\saperionlhk\sap_debitor\bak\
pause
@echo OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "delims=" %%i IN ('DIR /b') DO (
SET a=%%~ni
SET b=%%~xi
ECHO !a:.=!!b!
REN "%%i" "!a:.=!!b!"
)

Sehe ich dass er nicht in das Verzeichnis wechselt:


C:\Windows\system32>cd Z:\Farbscannen\Uebergabe\saperionlhk\sap_debitor\bak\

C:\Windows\system32>pause

Ich bin einfach zu blöd face-sad

Gruß
Member: Snowman25
Solution Snowman25 Jun 25, 2015, updated at Jun 26, 2015 at 09:45:17 (UTC)
Goto Top
Hallo Sommerpalme73,

wenn du das Skript per Rechtskick -> Ausführen als.. öffnest, liegt das Working Directory bei %windir%\system32.
Da soll das natürlich NICHT sein!

Du musst entweder ein CD in das Verzeichnis machen, oder die Batch NICHT als Admin ausführen (sollte nicht nötig sein).

Unter Umständen hast du ein paar Dateien in deinem SYSTEM32-Ordner umbenannt.
Hier eine Auflistung von meinem Win7 System32-Ordner, welche einen Punkt enthalten:
Gfxres.ar-SA
Gfxres.cs-CZ
Gfxres.da-DK
Gfxres.de-DE
Gfxres.el-GR
Gfxres.en-US
Gfxres.es-ES
Gfxres.fi-FI
Gfxres.fr-FR
Gfxres.he-IL
Gfxres.hr-HR
Gfxres.hu-HU
Gfxres.it-IT
Gfxres.ja-JP
Gfxres.ko-KR
Gfxres.nb-NO
Gfxres.nl-NL
Gfxres.pl-PL
Gfxres.pt-BR
Gfxres.pt-PT
Gfxres.ro-RO
Gfxres.ru-RU
Gfxres.sk-SK
Gfxres.sl-SI
Gfxres.sv-SE
Gfxres.th-TH
Gfxres.tr-TR
Gfxres.zh-CN
Gfxres.zh-TW
GfxUI.exe
lmmonres.cs
lmmonres.da
lmmonres.de
lmmonres.es-CO
lmmonres.es
lmmonres.fi
lmmonres.fr-CA
lmmonres.fr
lmmonres.hu
lmmonres.it
lmmonres.nl
lmmonres.no
lmmonres.pl
lmmonres.pt-BR
lmmonres.pt
lmmonres.sv
lmmonres.tr
lmmonres.zh
NetTrace.PLA.Diagnostics

Du möchtest ausserdem den Befehlsaufruf in der FOR-Schleife in dir /b *.pdf ändern.

Gruß,
@Snowman25

€dit:
Z: ist ein Netzlaufwerk und für deinen Administrator nicht verfügbar.
benutze PUSHD \\server\pfad\zum\mountpoint anstelle des CD.
Member: Sommerpalme73
Sommerpalme73 Jun 26, 2015 at 06:10:07 (UTC)
Goto Top
Super! Vielen, vielen Dank. Ich habe mir leider seit Win7 so angewöhnt alles als Admin auszuführen, dass ich das schon automatisch mache.

Jetzt hat es genau so geklappt wie ich das wollte.

Viele liebe Grüße
Member: Snowman25
Snowman25 Jun 26, 2015 at 08:06:59 (UTC)
Goto Top
Member: Sommerpalme73
Sommerpalme73 Jun 26, 2015 at 08:19:45 (UTC)
Goto Top
Hallo Snowman25,

ich hab jetzt nur noch ein kleines Problem was mir aufgefallen ist. Vor der Dateiendung macht er jetzt immer ein Leerzeichen. Geht das auch noch ohne? BSP: 5.1234.123456.7_0001.pdf wird jetzt 512341234567_0001 .pdf , was jetzt nicht so schlimm wäre aber nicht ganz so schick.

Liebe Grüße
Member: Snowman25
Solution Snowman25 Jun 26, 2015 updated at 09:44:42 (UTC)
Goto Top
Dann muss sich bei dir irgendwo ein Leerzeichen reingemogelt haben.
Hier z.B.:
REN "%%i" "!a:.= !!b!"
                ^

Oder am Ende der SET-Befehle.
Einfach mal den Cursor an das Zeilenende bewegen. Die Zeilen sollten DIREKT nach %%~ni bzw. %%~xi aufhören
Member: Sommerpalme73
Sommerpalme73 Jun 26, 2015 at 08:48:22 (UTC)
Goto Top
Nochmals vielen vielen Dank. Jetzt ist es perfekt.
Member: Snowman25
Snowman25 Jun 26, 2015 at 08:51:02 (UTC)
Goto Top
Schön face-smile
Kannst du bitte noch einen meiner Beitrage als "ZurL ösung beigetragen" markieren?
Danke!
Member: Sommerpalme73
Sommerpalme73 Jun 26, 2015 at 09:45:44 (UTC)
Goto Top
Ja sehr gerne. Hab ich erledigt.