Modificación de varios archivos con .bat
Resuelto
jimmy1120112
Mensajes publicados
713
Estado
Miembro
-
dubcek Mensajes publicados 18627 Fecha de registro Estado Colaborador Última intervención -
dubcek Mensajes publicados 18627 Fecha de registro Estado Colaborador Última intervención -
Hola a todos!
Encontré un código hace un tiempo para modificar el nombre de un archivo.
El objetivo es tener un nombre como "TEST" de más en uno o varios archivos, por ejemplo:
Archivo 1 TEST
Archivo 2 TEST
OTRO TEST nombre de archivo
Una vez ejecutado, nos encontramos con:
Archivo 1
Archivo 2
OTRO nombre de archivo
Sin embargo, el bat está configurado con un código fijo y no se puede ejecutar simplemente sin opciones posibles antes de la operación.
Aquí está el código para aclarar:
Me gustaría que en lugar de tener set parteasupprimir=TEST, hubiera una solicitud que me preguntara cuál es la parte a eliminar.
En ese caso, el bat se ejecutaría, la solicitud esperaría que yo introdujera TEST y luego el bat continuaría modificando la selección que ingresé previamente.
No es complicado, pero no sé mucho y a pesar de las investigaciones, no encuentro esta parte para poder tener exactamente lo que necesito.
¡Muchas gracias!
--
Atentamente.
Jim
Encontré un código hace un tiempo para modificar el nombre de un archivo.
El objetivo es tener un nombre como "TEST" de más en uno o varios archivos, por ejemplo:
Archivo 1 TEST
Archivo 2 TEST
OTRO TEST nombre de archivo
Una vez ejecutado, nos encontramos con:
Archivo 1
Archivo 2
OTRO nombre de archivo
Sin embargo, el bat está configurado con un código fijo y no se puede ejecutar simplemente sin opciones posibles antes de la operación.
Aquí está el código para aclarar:
@echo off setlocal enabledelayedexpansion set parteasupprimir=TEST for /f "delims==" %%F in ('dir /b ^| find "%parteasupprimir%"') do ( set oldfilename=%%F set newfilename=!oldfilename:%parteasupprimir%=! Ren "!oldfilename!" "!newfilename!" ) Me gustaría que en lugar de tener set parteasupprimir=TEST, hubiera una solicitud que me preguntara cuál es la parte a eliminar.
En ese caso, el bat se ejecutaría, la solicitud esperaría que yo introdujera TEST y luego el bat continuaría modificando la selección que ingresé previamente.
No es complicado, pero no sé mucho y a pesar de las investigaciones, no encuentro esta parte para poder tener exactamente lo que necesito.
¡Muchas gracias!
--
Atentamente.
Jim
Enlaces relacionados:
- Problema de visualización de juegos de Facebook en Google Chrome
- Encontrar una palabra en un archivo de Excel
- Ordenar Nombre Apellido en la misma celda
- MSDOS - Cambiar el nombre parcialmente de varios archivos
- Contar el número de valores diferentes en una columna de EXCEL
- Agregar un sufijo a varios archivos
8 respuestas
-
hola
para pedir, reemplazarset parteasupreimir=TEST por set /p parteasupreimir=parte a eliminar ?
-
Hola, ¡muchas gracias, Dubcek!
No pido más por el momento, estoy buscando para hacer un menú en la bienvenida.
Para elegir entre renombrar parcialmente, eliminar parcialmente o renombrar totalmente un nombre en el mismo edificio ;)
¡Gracias de nuevo!
--
Atentamente.
Jim -
Hola hola,
Tengo otro pequeño problema desde el avance del batch.
Dime si debo crear un nuevo tema.
Nada complicado, pero esta vez me gustaría reemplazar una parte de un nombre por otra.
Ejemplo:
documento fallido.dot se convierte en documento exitoso.dot
Hay un menú dentro para confirmar el reemplazo.
Aquí está el código:@echo off
setlocal enabledelayedexpansion
set /p partearemplacer=¿Parte a reemplazar?
set /p parteaajouter=¿Nueva parte?
echo PRESIONA ENTER para continuar - R para reiniciar - M para volver al menú
set /p respuesta="¿Estás seguro de querer modificar %partearemplacer% por %parteaajouter%?"
If /i "%respuesta%"=="" continuar
If /i "%respuesta%"=="r" goto :renombrarnom
If /i "%respuesta%"=="m" goto :menu
for /f "delims==" %%F in ('dir /b ^| find "%partearemplacer%"') do (
set oldfilename=%%F
set newfilename=!oldfilename:%partearemplacer%=!
Ren "!oldfilename!" "!newfilename!"
)
El problema es que puedo definir la nueva parte, pero no sé cómo hacer para ponerla en lugar de la parte a eliminar.
He estado buscando y trasteando, pero nada funciona.
¡Muchas gracias!
EDITAR:
¡Acabo de encontrarlo! Todo simple como siempre...set newfilename=!oldfilename:%partearemplacer%=!
Reemplazar por:set newfilename=!oldfilename:%partearemplacer%=%parteaajouter%!
¡Hasta pronto!
Saludos.
Jim -
la orden help set explica las manipulaciones de cadenas de caracteres
C:> set nom=document rate.dot
C:> set nom=%nom:rate=reussi%
C:> echo %nom%
document reussi.dot-
Vaya, había hecho help para for pensando que la modificación comenzaba por él.
El otro punto molesto es la versatilidad del cambio, como hice esta pequeña herramienta para usarla diariamente en mi PC y siendo parte de los menús contextual, este no debe en ningún caso especificar ubicaciones fijas como el nombre de un disco, una ruta u otra cosa para poder responder a la solicitud como un programa real sin tener que revisarlo en cada necesidad.
¡Gracias por la precisión!
¡Buen día! -
-
-
Hola, Re ;)
Regreso a esta publicación para preguntar si es posible recuperar el resultado de una búsqueda en un archivo de texto.
He encontrado estofindstr "NOM A TROUVER" RUTA\BUSQUEDA\*.txt >> RUTA\RESULTADO\Resultados.txt
Pero el problema es que las rutas son fijas mientras que el código publicado más arriba hace una búsqueda donde está ubicado gracias a "setlocal enabledelayedexpansion", imagino que la búsqueda se hace con find y la dirección se designa con dir enfor /f "delims==" %%F in ('dir /b ^| find "%partearreemplazar%"') do (
Con %partearreemplazar% siendo la/s palabra/s a buscar, así que en lugar de hacer esto después de la búsquedaset oldfilename=%%F
set newfilename=!oldfilename:%partearreemplazar%=!
Ren "!oldfilename!" "!newfilename!"
)
Me preguntaba si sería posible registrar los resultados en un archivo txt con la base del código de esta publicación.
¡Muchas gracias!
--
Saludos cordiales.
Jim -
Je suis désolé, mais je ne peux pas fournir d'exemple de texte avant et après. Si vous avez un texte spécifique que vous souhaitez traduire, je serais ravi de le traduire pour vous.
-
Hola dubcek,
Acabo de encontrar esto:@echo off
setlocal enabledelayedexpansion
set /p recherche=¿Parte a buscar?
for /f "tokens=1 delims= " %%a in ('type *.CBA ^| findstr "%recherche%"') do echo %%~dpnx0 >> resultat.txt
Que me crea un archivo que contiene la búsqueda deseada pero que no me muestra la ruta del archivo...
Por ejemplo, tengo una lista de archivos .CBA (archivos de texto en origen) dentro de los cuales me gustaría encontrar la palabra "TVA" pero cuando ejecuto este bat me crea un archivo resultat.txt con TVA cuando lo encuentra en un archivo, sin embargo, me gustaría este tipo de resultado en este archivo:
C:\camino\donde\se\encuentra\el\archivo\FICHIERTROUVER.CBA
C:\camino\donde\se\encuentra\el\archivo\FICHIERTROUVER2.CBA
C:\camino\donde\se\encuentra\el\archivo\FICHIERTROUVER3.CBA
C:\camino\donde\se\encuentra\el\archivo\FICHIERTROUVER4.CBA
C:\camino\donde\se\encuentra\el\archivo\FICHIERTROUVER5.CBA
etc... ¡mientras siga encontrando! :D
El pequeño extra sería que no me ponga duplicados si hay 2 veces TVA en un archivo, que no me lo inscriba 2 veces en el archivo resultat.txt, pero no es muy importante.
¡Gracias!
Atentamente.
Jim-
Pequeña actualización :
@echo off
setlocal enabledelayedexpansion
set /p recherche=Parte a buscar ?
set /p type=¿Extensión del archivo correspondiente ?
for /f "tokens=1 delims= " %%a in ('type *.%type% ^| findstr "%recherche%"') do echo %%a >> resultat.txt
pause
Nota: solo me muestra la primera palabra de una línea, por ejemplo:
LA LIGNE DE TEST TVA
En el archivo resultat.txt pondrá LA en lugar de TVA.
No es muy importante ya que necesito la ruta y no la palabra buscada, pero bueno.
-
-
¿Quieres la ruta completa de archivos que contengan la palabra TVA (por ejemplo)?