web-dev-qa-db-de.com

windows-Batchdatei umbenennen

Ich habe eine Datei wie AAA_a001.jpg, BBB_a002.jpg, CCC_a003.jpg in Windows 7 Und ich versuche, mithilfe von batch diese Dateien in a001_AAA.jpg, a002_BBB.jpg, a003_CCC.jpg umzubenennen.

Nur um den Inhalt zwischen _ zu tauschen.

Ich habe eine Weile gesucht, weiß aber immer noch nicht, wie das geht ... Kann jemand helfen? Vielen Dank.

10
yuchien
@echo off
pushd "pathToYourFolder" || exit /b
for /f "eol=: delims=" %%F in ('dir /b /a-d *_*.jpg') do (
  for /f "tokens=1* eol=_ delims=_" %%A in ("%%~nF") do ren "%%F" "%%~nB_%%A%%~xF"
)
popd

Hinweis: Der Name wird beim ersten Auftreten von _ geteilt. Wenn eine Datei "part1_part2_part3.jpg" heißt, wird sie in "part2_part3_part1.jpg" umbenannt.

7
dbenham

Verwenden Sie den Befehl REN

Ren ist für rename

ren ( where the file is located ) ( the new name )

beispiel

ren C:\Users\&username%\Desktop\aaa.txt bbb.txt

es wird aaa.txt in bbb.txt geändert

Ihr Code lautet:

ren (file located)AAA_a001.jpg a001.AAA.jpg

ren (file located)BBB_a002.jpg a002.BBB.jpg

ren (file located)CCC_a003.jpg a003.CCC.jpg

und so weiter

IT WILL NOT WORK IF THERE IS SPACES!

Hoffe, es hilft: D

31
Itsproinc

wie Itsproinc sagte, funktioniert der Befehl REN!

wenn Ihr Dateipfad/-name jedoch Leerzeichen enthält, verwenden Sie Anführungszeichen "".

beispiel:

ren C:\Users\&username%\Desktop\my file.txt not my file.txt

hinzufügen " "

ren "C:\Users\&username%\Desktop\my file.txt" "not my file.txt"

ich hoffe es hilft

6
M.S.M.

Ich gehe davon aus, dass Sie die Länge des Parts vor dem _ und nach dem Unterstrich sowie die Erweiterung kennen. Wenn Sie dies nicht tun, ist es möglicherweise komplexer als eine einfache Teilzeichenfolge.

cd C:\path\to\the\files
for /f %%a IN ('dir /b *.jpg') do (
set p=%a:~0,3%
set q=%a:~4,4%
set b=%p_%q.jpg
ren %a %b
)

Ich habe mir gerade dieses Skript ausgedacht und es nicht getestet. Check out this und that für weitere Informationen.

Wenn Sie davon ausgehen wollen, dass Sie die Positionen des _ und der Längen und der Erweiterung nicht kennen, könnten Sie meiner Meinung nach etwas mit for-Schleifen machen, um den Index des _ zu überprüfen, dann den letzten Index des ., packen Sie es in ein goto-Ding und machen Sie es zum Laufen. Wenn Sie bereit sind, diese Probleme durchzugehen, würde ich vorschlagen, dass Sie mindestens WindowsPowerShell (oder Cygwin) verwenden (für Sie) oder eine erweiterte Skriptsprache installieren (Python/Perl) Weg.

1
jadkik94

Ich benenne den Code um

echo off

setlocal EnableDelayedExpansion

for %%a in (*.txt) do (
    REM echo %%a
    set x=%%a
    set mes=!x:~17,3!

    if !mes!==JAN (
        set mes=01
    )

    if !mes!==ENE (
        set mes=01
    )

    if !mes!==FEB (
        set mes=02
    )

    if !mes!==MAR (
        set mes=03
    )

    if !mes!==APR (
        set mes=04
    )

    if !mes!==MAY (
        set mes=05
    )

    if !mes!==JUN (
        set mes=06
    )

    if !mes!==JUL (
        set mes=07
    )

    if !mes!==AUG (
        set mes=08
    )

    if !mes!==SEP (
        set mes=09
    )

    if !mes!==OCT (
        set mes=10
    )

    if !mes!==NOV (
        set mes=11
    )

    if !mes!==DEC (
        set mes=12
    )

    ren %%a !x:~20,4!!mes!!x:~15,2!.txt 

    echo !x:~20,4!!mes!!x:~15,2!.txt 

)
0
jimra