Agregue texto al final del nombre de archivo (pero antes de la extensión) usando un archivo por lotes


18

Tengo una lista de archivos que están en el formato de la izquierda. Quiero agregar una cadena a cada nombre de archivo, pero antes de la extensión, como se muestra:

File 1.txt  ->  File 1 version 1.txt
File 2.txt  ->  File 2 version 1.txt
File 3.txt  ->  File 3 version 1.txt
File 4.txt  ->  File 4 version 1.txt
...

En cada caso, la cadena adjunta es la misma en todos los archivos.

Esto parece una tarea tan simple, pero tengo algunos problemas para poner esto en un archivo por lotes.

Intenté el rencomando y seguí algunos de los ejemplos en esta página , pero los nombres de archivo resultantes agregan la cadena después de la extensión:

File 1.txt version 1.txt

La información en su enlace SS64 "esta página" proviene de este SU Q&A (con mi bendición): ¿Cómo interpreta el comando RENAME de Windows los comodines? Mantengo la respuesta SU (con poca frecuencia) a medida que descubro nuevas características.
dbenham

Respuestas:


6

para nombres de archivo más largos, tendrá que agregar un poco más ?en el bloque con la masa de?????????

ren *.?* ????????????????????????????????????????????????????????" version 1".*

2
¡Gracias por responder tan pronto! Edité el comando ligeramente, para conservar la extensión del archivo y solo afectar los archivos txt: ren * .txt ????????????????????????? "Versión 1.txt "
TheTurkey

¿Qué
pasa

cuántos ? se necesitan personajes?
Kaveesh Kanwal

39

En lugar de confiar en las peculiaridades indocumentadas de ren , ¿por qué no hacer esto de la manera adecuada?

for %a in (*.txt) do ren "%~a" "%~na version 1%~xa"

Si desea usar esto en un archivo por lotes, recuerde duplicar cada signo%.


1
¡Excelente! Esta es una mejor respuesta cualquier día. +1
Fr0zenFyr

2

Quería agregar "_A" a varios archivos y así es como lo hice.

Primero eliminé la extensión, agregué el sufijo y luego cambié la extensión a original. Realmente funcionó para mí y mantuvo el código de lote simple, ya que no soy un gran programador.

@ECHO OFF

REN *.pdf *.
REN *. *_A.
REN *. *.pdf

2

Para las personas que no tienen experiencia con el comando (como yo), hay un par de softwares que facilitan mucho el cambio de nombre:

  • Utilidad de cambio de nombre masivo (sin código abierto)
  • Renombrarlo! (fuente abierta)

1

La solución de @ bwDraco fue buena, pero podría haberse mantenido más simple. Mi conjunto de archivos eran todos * .jpg y quería cambiarles el nombre a todos * c.jpg. Solo necesita 2 pasos para esto, no 3:

ren "{filepath}\*.jpg" *.
ren "{filepath}\*" *c.jpg

0

Recurrentemente a través de subcarpetas

#!/bin/bash
# Warning: globstar excludes hidden directories.
# Turn on recursive globbing (in this script) or exit if the option is not supported:
shopt -s globstar || exit
for f in **
do
if [ -f "$f" ]; then
   extn=${f##*.} # save the extension of the file
   #mv "$f" "${f%.*}"_suffix.${extn};
   mv "$f" "${f%.*} version 1".${extn};
fi
done
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.