Prompt de comando do Windows XP renomear o comando para essa tarefa?

1

Prompt de comando do Windows XP renomeia o comando para essa tarefa?

Renomear ...

file.mp3.0001.mp3  
file.mp3.0002.mp3  
file.mp3.0003.mp3  
file.mp3.0004.mp3  

para

afile.mp3.0001.mp3  
afile.mp3.0002.mp3  
afile.mp3.0003.mp3  
afile.mp3.0004.mp3  

e depois

afile.mp3.0001.mp3  
afile.mp3.0002.mp3  
afile.mp3.0003.mp3  
afile.mp3.0004.mp3  

para

bbfile.mp3.0001.mp3  
bbfile.mp3.0002.mp3  
bbfile.mp3.0003.mp3  
bbfile.mp3.0004.mp3  

e depois

afile.mp3.0001.mp3  
afile.mp3.0002.mp3  
afile.mp3.0003.mp3  
afile.mp3.0004.mp3  

para

b.bfile.mp3.0001.mp3  
b.bfile.mp3.0002.mp3  
b.bfile.mp3.0003.mp3  
b.bfile.mp3.0004.mp3  

Como posso fazer isso?

    
por Siva 28.04.2011 / 12:36

3 respostas

4

apenas um comando de console para renomear de "* .mp3" para "bb * .mp3" - funciona:

for /f "delims=" %i in ('dir /b /on /a-d *.mp3') do ren "%i%" "b.b%i"

mas se você quiser em etapas, será mais difícil, como a minha solução em Como renomear 80.000 arquivos de uma vez no Windows - Eu os editei para as suas necessidades :), totalmente testado, e ele também procura em subpastas:

  • crie um arquivo em lotes com os seguintes comandos
  • altere os parâmetros das variáveis para o que você deseja
    • caminho: coloque "" dentro do caminho raiz dos seus arquivos (por exemplo, "C: \ documentos e configurações \ usuário \ área de trabalho \ nova pasta"
    • numfirstchars2replaceX: coloque um número com os primeiros caracteres a serem substituídos pela etapa eaxh X (no seu caso, numfirstchars2replace1 = 0, numfirstchars2replace2 = 1, numfirstchars2replace1 = 1)
    • str2putX: coloque uma string para ser adicionada como um prefixo do novo nome de arquivo para cada etapa X (no seu caso, str2put1 = a, str2put2 = bb, str2put3 = b.)
  • executá-lo em uma pasta diferente de onde os arquivos são


@echo off

::only to tell user what this bat are doing
echo.1.initializing...

::enable that thing to allow, for example, incremental counter in a for loop :)
echo.- EnableDelayedExpansion
SETLOCAL EnableDelayedExpansion

::variables
echo.- variables
:: - place here the absolute root path of your files
set path="put here absolute path where are the root folder of your files"
set pathbak=%cd%
set numfirstchars2replace1=0
set numfirstchars2replace2=1
set numfirstchars2replace3=1
set str2put1=a
set str2put2=bb
set str2put3=b.

::go to %path% and its driveletter
echo.- entering the path you want
for /f "delims=" %%i in ('echo.%path%') do %%~di
cd %path%

::search all subfolders and save them to a temp file
echo.- searching for subfolders
echo.%path%>%temp%\tmpvar.txt
for /f "delims=" %%i in ('dir /s /b /on /ad') do echo."%%i">>%temp%\tmpvar.txt

::execute command for root folder and all found subfolders
echo.
echo.2.executing...

echo.- step 1
for /f "delims=" %%i in (%temp%\tmpvar.txt) do (
  cd %%i
  echo.- in folder: %%i
  for /f "delims=" %%j in ('dir /b /on /a-d *.mp3') do (
    set newname=%%j
    set newname=!newname:~%numfirstchars2replace1%,1000!
    echo.- renaming from "%%j" to "%str2put1%!newname!"...
    ren "%%j" "%str2put1%!newname!"
  )
)

echo.- step 2
for /f "delims=" %%i in (%temp%\tmpvar.txt) do (
  cd %%i
  echo.- in folder: %%i
  for /f "delims=" %%j in ('dir /b /on /a-d *.mp3') do (
    set newname=%%j
    set newname=!newname:~%numfirstchars2replace2%,1000!
    echo.- renaming from "%%j" to "%str2put2%!newname!"...
    ren "%%j" "%str2put2%!newname!"
  )
)

echo.- step 3
for /f "delims=" %%i in (%temp%\tmpvar.txt) do (
  cd %%i
  echo.- in folder: %%i
  for /f "delims=" %%j in ('dir /b /on /a-d *.mp3') do (
    set newname=%%j
    set newname=!newname:~%numfirstchars2replace3%,1000!
    echo.- renaming from "%%j" to "%str2put3%!newname!"...
    ren "%%j" "%str2put3%!newname!"
  )
)

echo.
echo.3.exiting...
::return to %pathbak% and its driveletter
for /f "delims=" %%i in ('echo.%pathbak%') do %%~di
cd %pathbak%

@echo on
    
por 28.04.2011 / 14:15
0

Não conheço nenhuma maneira de fazer isso por meio do PowerShell ou IrfanView , embora as imagens também façam renomeação em lote. Pode ser possível fazer o script, no entanto, não tenho 100% de certeza.

    
por 28.04.2011 / 12:59
0

Você provavelmente precisará de um utilitário de renomeamento mais avançado, como A Renomeação .

    
por 28.04.2011 / 12:54