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-ID: 250588

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

Ausgedruckt am: 25.11.2024 um 01:11 Uhr

rubberman
Lösung rubberman 30.09.2014 aktualisiert um 22:03:42 Uhr
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
bugmenot2
bugmenot2 30.09.2014 aktualisiert um 20:58:04 Uhr
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
rubberman
Lösung rubberman 30.09.2014 aktualisiert um 22:03:35 Uhr
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
bugmenot2
bugmenot2 30.09.2014 um 21:36:37 Uhr
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
rubberman
Lösung rubberman 30.09.2014 aktualisiert um 22:03:32 Uhr
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
bugmenot2
bugmenot2 30.09.2014 um 21:55:00 Uhr
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?
rubberman
Lösung rubberman 30.09.2014 aktualisiert um 22:03:26 Uhr
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
bugmenot2
bugmenot2 30.09.2014 um 22:03:20 Uhr
Goto Top
jetzt gehts. tausend dank!!
rubberman
rubberman 30.09.2014 um 22:15:41 Uhr
Goto Top
Gerne face-smile