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

13

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 renombrar fácilmente un solo archivo con ren.

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

¿Sería posible cambiarle el nombre de forma masiva con Windows reno renameherramienta?

Sabrina
fuente
1
Buena utilidad gratuita para facilitar este tipo de tarea ... bulkrenameutility.co.uk/Main_Intro.php
Moab
Estoy de acuerdo. Puedo nombrar muchas soluciones basadas en GUI para esto, y me pregunto por qué la insistencia en CLI
Mawg dice que reinstalar a Monica el
@Mawg, ¿puedes hacer scripts con esas herramientas GUI?
Sabrina
Podría, usando AutoIt, pero probablemente recomendaría no hacerlo :-) Me preguntaba si había un requisito difícil para CLI, y ahora parece que sí. Gracias por aclarar
Mawg dice que reinstalar a Monica el

Respuestas:

13

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

Sí, pero requiere un archivo por lotes.

test.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

Otras lecturas

DavidPostill
fuente
17

Este PowerShell one liner expandirá todos los números en el nombre del archivo a dos lugares .PadLeft(2,'0'):
(y dejará los números con más lugares intactos)

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 seguro antes de ejecutar los comandos, agregue cualquiera

  • -Confirm que pregunta antes de cambiar el nombre
  • -WhatIfque enumera todos los cambios de nombre que se ejecutarían sin el parámetro

justo en frente del último "

LotPings
fuente
3

Editar: Acabo de notar que esta pregunta es específicamente sobre el cambio de nombre desde la línea de comandos, por lo que no responde la pregunta directamente ... La guardaré por ahora, esperando que sea útil para otros.


El administrador de archivos de Total Commander tiene una excelente herramienta de cambio de nombre masivo. Incluye muchas características, incluida la vista previa de cambio de nombre, diferentes máscaras de cambio de nombre, expresiones regulares, cambio de nombre de archivos en toda la jerarquía de carpetas y mucho más. Al mismo tiempo, es bastante fácil de usar.

Aquí hay una captura de pantalla para demostrar su uso:

Ejemplo de Total Commander Multi Rename

Paso a paso:

  1. Descargue y ejecute Total Commander.
  2. Nativate a la carpeta con los archivos para renombrar.
  3. Marque los archivos para cambiar el nombre:
    • Opción 1 - Ctrl+ Apara marcar todos los archivos en la carpeta.
    • Opción 2: marque los archivos uno por uno, utilizando la Spacetecla o el botón derecho del mouse.
    • Opción 3: abra "Buscar archivos" ( Alt+ F7), escriba *.txten el cuadro "Buscar", haga clic en "Iniciar búsqueda", presione "Feed to listbox", luego marque los archivos con Ctrl+ A. Use esta técnica si desea cambiar el nombre de los archivos también en las carpetas internas.
  4. Presione Ctrl+ Mpara abrir la herramienta Multi-Rename.
  5. Establezca los valores deseados en los cuadros "Buscar" y "Reemplazar por". Si usa una expresión regular, marque la casilla RegEx.
  6. Presiona "Comenzar".
valiano
fuente
-2

ren *.bat *.txtfuncionará para cambiar el nombre de las extensiones en todos los archivos coincidentes que retengan la otra parte del nombre. ¿No podrías abusar de esto para ejecutar una secuencia de rencomandos?

  • ren "File *" "File 0*"
  • ren "File 00*" "File 0*"
  • (lidiar con los restos colgantes como File 022 - Example.txt
Douglas Held
fuente
1
Esto NO es útil, ¿verificó qué hará su comando? 2-> 0, 22-> 02, 15-> 05.
LotPings
No, no tengo un sistema operativo Windows, así que no lo probé. Pero he recordado durante años que REN puede hacer esto. Tenía la intención de dar una sugerencia de todos modos.
Douglas celebrada el