13 votos

¿Windows cambia el nombre del archivo intermedio a través de CLI?

Archivos originales

 File 15 - Example.txt
File 2 - Example.txt
File 22 - Example.txt
File 3 - Example.txt
File 4 - Example.txt
File 5 - Example.txt
 

Salida deseada

 File 15 - Example.txt
File 02 - Example.txt
File 22 - Example.txt
File 03 - Example.txt
File 04 - Example.txt
File 05 - Example.txt
 

Se puede cambiar el nombre de un solo archivo fácilmente con ren .

 ren "File 2 - Example.txt" "File 02 - Example.txt"
 

¿Sería posible cambiar el nombre de forma masiva con la herramienta de Windows ren o rename ?

17voto

LotPings Puntos 62

Este PowerShell uno forro se expanda a todos los números en el nombre de archivo a dos lugares .PadLeft(2,'0'):
(y dejar los números con más lugares virgen)

Get-ChildItem *[0-9]*.txt|Rename-Item -NewName {([regex]::Replace($_.BaseName,'\d+',{$args[0].Value.PadLeft(2,'0')}))+$_.Extension}

para estar en el tema, envuelto en una línea cmd/archivo por lotes:

Powershell -Nop -C "Get-ChildItem *[0-9]*.txt|Rename-Item -NewName {([regex]::Replace($_.BaseName,'\d+',{$args[0].Value.PadLeft(2,'0')}))+$_.Extension}"

Para estar en el lado seguro antes de la ejecución de los comandos, anexar bien

  • -Confirm que pide antes de hacer un cambio de nombre
  • -WhatIfque enumera todos le cambia el nombre podría ejecutarse sin el parámetro

justo en frente de la última "

13voto

DavidPostill Puntos 30286

Sería posible bulk rename con Windows ren o rename tool?

Sí, pero se requiere un archivo de proceso por lotes.

prueba.cmd:

@echo off
setlocal EnableDelayedExpansion
for /f "tokens=1,2,3,4" %%i in ('dir /b *Example.txt') do (
  rem pad 2nd token with leading zero
  set _num=0%%j
  set _num=!_num:~-2!
  ren "%%i %%j %%k %%l" "%%i !_num! %%k %%l"
  )
endlocal

ejemplo:

> dir *Example.txt
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

03/01/2019  11:30                 0 File 15 - Example.txt
03/01/2019  11:30                 0 File 2 - Example.txt
03/01/2019  11:30                 0 File 22 - Example.txt
03/01/2019  11:30                 0 File 3 - Example.txt
03/01/2019  11:30                 0 File 4 - Example.txt
03/01/2019  11:30                 0 File 5 - Example.txt
               6 File(s)              0 bytes
               0 Dir(s)  1,075,134,230,528 bytes free

> ..\test

> dir
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

03/01/2019  11:54    <DIR>          .
03/01/2019  11:54    <DIR>          ..
03/01/2019  11:30                 0 File 02 - Example.txt
03/01/2019  11:30                 0 File 03 - Example.txt
03/01/2019  11:30                 0 File 04 - Example.txt
03/01/2019  11:30                 0 File 05 - Example.txt
03/01/2019  11:30                 0 File 15 - Example.txt
03/01/2019  11:30                 0 File 22 - Example.txt
               6 File(s)              0 bytes
               2 Dir(s)  1,075,134,230,528 bytes free

Leer Más

3voto

valiano Puntos 208

Edit: acabo de notar que esta pregunta es específicamente sobre el cambio de nombre de la línea de comandos, por lo que no responde a la pregunta directamente... me la guardo por ahora, esperando que sea de utilidad para los demás.


El Total Commander administrador de archivos tiene una excelente bulk rename tool. Incluye muchas características, incluyendo cambiar el nombre de la vista previa, cambiar el nombre de los diferentes máscaras, las expresiones regulares, el cambio de nombre de los archivos en la carpeta entera hierarcy, y mucho más. Al mismo tiempo, es muy fácil de usar.

Aquí está una captura de pantalla para demostrar su uso:

Total Commander Multi Rename Example

Paso por paso:

  1. Descargar y ejecutar el Total Commander.
  2. Nativate a la carpeta con los archivos para cambiar el nombre.
  3. Marque los archivos que desea cambiar el nombre de:
    • Opción 1 - Ctrl + Una para marcar todos los archivos en la carpeta.
    • Opción 2 - Marcar los archivos uno por uno, utilizando el Espacio de tecla o botón derecho del ratón.
    • Opción 3 - Abrir "Buscar Archivos" (Alt + F7), escriba *.txt en la opción "Buscar", haga clic en "Iniciar Búsqueda", pulse "Alimentar al listbox", a continuación, marque los archivos con Ctrl + Una. El uso de esta técnica si desea cambiar el nombre de archivos también en el interior de las carpetas.
  4. Presione Ctrl + M para abrir el Multi-herramienta de cambio de nombre.
  5. Establezca los valores que desee en "Buscar" y "Reemplazar con" cuadros. Si se utiliza una expresión regular, compruebe el RegEx cuadro.
  6. Pulsa "Start!".

-2voto

Douglas Held Puntos 101

ren *.bat *.txt trabajará para cambiar el nombre de las extensiones en todos los archivos coincidentes que conservan la otra parte del nombre. ¿No podría abusar de esto para ejecutar una secuencia de comandos ren ?

  • ren "File *" "File 0*"
  • ren "File 00*" "File 0*"
  • (lidiar con los restos colgantes como File 022 - Example.txt

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: