bugmenot2
Goto Top

Im Dateinamen den ERSTEN Unterstrich durch Punkt ersetzen (immer drittes Zeichen)

Ich habe die Frage hier schon gestellt:

Batch Alle Dateien in einem Ordner umbenennen Punkt durch Unterstrich ersetzen


jedoch bin ich mir nicht sicher ob das da noch jemand ließt !?


habe den Code übernommen und es funktioniert wunderbar

@echo off&setlocal
for %%i in ("C:\...\*_*") do (
set "neu=%%~ni"
for /f "delims=" %%j in ('call echo "%%neu:_=.%%"') do ren "%%~i" "%%~j%%~xi"
)


nur damit werden ALLE Unterstriche im Dateinamen durch Punkte ersetzt.

Ich würde dies aber nur für das dritte Zeichen benötigen. Also AB_CD_E.pdf wird AB.CD_E.pdf bzw. aus AB_CD_E.pdf wird AB.CD_E.pdf

Habe leider nur sehr begrenzte Kenntnisse und würde gerne wissen ob das geht? Es vereinfacht ja wahrscheinlich die Sache, dass es sich immer um das dritte Zeichen von links dreht!?


Bin für jede Hilfe dankbar!

Gruß

Content-Key: 250588

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

Printed on: April 25, 2024 at 12:04 o'clock

Member: rubberman
Solution rubberman Sep 30, 2014 updated at 20:03:42 (UTC)
Goto Top
Hallo bugmenot2,

ungetestet etwa so:
echo off &setlocal
for %%i in ("C:\...\*_*") do (  
  for /f "tokens=1* delims=_" %%j in ("%%~nxi") do ren "%%~i" "%%j.%%k"  
)
Grüße
rubberman
Member: bugmenot2
bugmenot2 Sep 30, 2014 updated at 18:58:04 (UTC)
Goto Top
sehr geil, danke !!!!


edit:

zu früh gefreut. face-sad

er benennt sie korrekt um und lässt den zweiten unterstrich stehen. wenn ich jetzt aber nochmal drauf klicke, ändert er auch den zweiten unterstrich in einen punkt.

vllt. muss man irgendwie gezielt das dritte Zeichen bearbeiten? face-confused

edit 2:

habe was gefunden aber weiß nicht so recht wo ich es einbauen soll

IF [%var:~,3%] == [_] (SET var=.%var:~3%)

quelle: http://www.winfuture-forum.de/index.php?showtopic=134338
Member: rubberman
Solution rubberman Sep 30, 2014 updated at 20:03:35 (UTC)
Goto Top
wenn ich jetzt aber nochmal drauf klicke, ändert er auch den zweiten unterstrich in einen punkt.
Natürlich. Dein Pattern ist "*_*", und solange das zutrifft, wird weiter geändert. Du musst also die Dateien ausschließen, bei denen irgendwo ein Punkt vor einem Unterstrich steht.
@echo off &setlocal
pushd "C:\..."  
for /f "delims=" %%i in ('dir /a-d /b "*_*" ^| findstr /rvc:"\..*_"') do (  
  for /f "tokens=1* delims=_" %%j in ("%%~nxi") do ren "%%~i" "%%j.%%k"  
)
popd

Grüße
rubberman
Member: bugmenot2
bugmenot2 Sep 30, 2014 at 19:36:37 (UTC)
Goto Top
ok, danke. nur kurz zur erläuterung

pushd "C:\..." [was kommt hier für "..." hin? nur der ordnerpfad?]
for /f "delims=" %%i in ('dir /a-d /b "*_*" ^| findstr /rvc:"\..*_"') do ( [was würde dann hier bei ".." hinkommen?]


sorr, ich kenn mich mit dieser ganzen syntax null aus face-sad
Member: rubberman
Solution rubberman Sep 30, 2014 updated at 20:03:32 (UTC)
Goto Top
pushd "C:\..." [was kommt hier für "..." hin? nur der ordnerpfad?]
Richtig.

for /f "delims=" %%i in ('dir /a-d /b "*_*" ^| findstr /rvc:"\..*_"') do ( [was würde dann hier bei ".." hinkommen?]
Das lässt du wie es ist. Die Hilfe zu FINDSTR verrät dir was das zu bedeuten hat, bzw. ich kann das Pattern auch kurz erklären:
\. Steht für einen Punkt
.* Steht für ein beliebiges Zeichen, das nicht, einmal oder mehrfach auftreten kann
_ Ist der Unterstrich
Normalerweise würde FINDSTR also genau solche Dateinamen finden, bei denen ein Punkt irgendwo vor einem Unterstrich kommt. Durch die Option /v wird die Logik aber umgekehrt und diese Dateien werden ausgefiltert.

Grüße
rubberman
Member: bugmenot2
bugmenot2 Sep 30, 2014 at 19:55:00 (UTC)
Goto Top
ok. weil irgendwie will es nicht funktionieren.

es könnte natürlich sein dass jetzt irgendwo ein Tippfehler ist, aber mit meinen bescheidenen Kenntnissen wäre das die Nadel im Heuhaufen face-wink

geht es denn bei dir?
Member: rubberman
Solution rubberman Sep 30, 2014 updated at 20:03:26 (UTC)
Goto Top
Ja, funktioniert bei mir. Der Grund warum es bei dir nicht funktioniert ist, dass ich bei meinem Test nicht tatsächlich umbenannt habe, sondern nur per echo ausgegeben habe, was passieren würde (... do echo ren ...). Ich schmeiß das echo oben mal aus dem Code ...

Grüße
rubberman
Member: bugmenot2
bugmenot2 Sep 30, 2014 at 20:03:20 (UTC)
Goto Top
jetzt gehts. tausend dank!!
Member: rubberman
rubberman Sep 30, 2014 at 20:15:41 (UTC)
Goto Top
Gerne face-smile