Ms-Dos - renombrar archivos con lo que esta entre 2 palabras

   
Vista:

renombrar archivos con lo que esta entre 2 palabras

Publicado por Borja (4 intervenciones) el 16/02/2016 13:19:06
Hola,

Tengo unos archivos dentro una carpeta y me gustaría renombrarlos con lo que esta entre el 1 y 2 que hay dentro de cada archivo. Ejemplo:

Texto del archivo1.txt:

aa fdg
b df ag
c as dgf
d as dfg
e g f
f sd f
gdf afg
1
hola hola
2

Me gustaria que al ejecutar el arhivo bat, el archivo1 se llamara "hola hola.txt" y asi para cada archivo.

Encontre este codigo que es para mostrar algo entre 2 palabras pero no funciona, me da error edlin.

1
2
3
4
5
6
7
8
9
10
11
12
@echo off
for /f "tokens=1 delims=:" %%x in ('type "texto.txt" ^| findstr /n "palabra1"') do (set /a inicio=%%x)
for /f "tokens=1 delims=:" %%x in ('type "texto.txt" ^| findstr /n "palabra2"') do (set /a fin=%%x)
set /a inicio+=1
set /a fin-=1
for /f "tokens=2 delims=:" %%x in (' 
^(
echo %inicio%^,%fin%l
echo e
^) ^|edlin /b texto.txt^| find /v "*%inicio%,%fin%l"^|find /v "Final del archivo de entrada"^|find /v "*e"') do (
echo %%x
)

Me podeis ayudar? Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana

renombrar archivos con lo que esta entre 2 palabras

Publicado por Antoni Masana (269 intervenciones) el 19/02/2016 08:39:05
No entiendo que es lo que pretendes hacer.

Me resulta confuso este texto: "Me gustaria que al ejecutar el arhivo bat, el archivo1 se llamara "hola hola.txt" y asi para cada archivo."

Pero lo más importante de tu problema, el EDLIN no existe.

Desapareció hace años, para ser más exacto con la versión 5.0 del MS-DOS y esto fue en 1991.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

renombrar archivos con lo que esta entre 2 palabras

Publicado por Borja (4 intervenciones) el 23/02/2016 11:48:54
Hola Antoni.

Es un programa que busque en un archivo de texto lo que hay entre dos palabras(en mi caso es 'Subject' y 'Date') y que renombre ese archivo de texto con lo que devuelva esa busqueda. Por ejemplo, si la busqueda entre esas dos palabras da 'archivo 234', que ese archivo de texto se renombre como 'archivo 234.txt'. Esto me gustaría hacerlo pero con todos los archivos de texto que tengo dentro de una carpeta.

No se si me he explicado mejor, jeje.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

renombrar archivos con lo que esta entre 2 palabras

Publicado por Antoni Masana (269 intervenciones) el 23/02/2016 12:24:25
Sigo sin entender el problema.

Veo lo siguiente: tienes el archivo archivo1.txt cuyo contenido es:

1
2
3
4
5
6
7
8
9
10
aa fdg
b df ag
c as dgf
d as dfg
e g f
f sd f
gdf afg
1
hola hola
2

Se tiene que renombrar con dos palabras del contenido, las líneas 1, 7 y 9 tiene dos palabras o dicho de la forma que lo entiende el BAT dos campos.

Se puede tomar el primero y seria "aa fdg.txt" o el último y seria hola hola.txt" el resto es más difícil.

Después se toma otro fichero con otro contenido y repetimos el mismo proceso.

¿Es así?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

renombrar archivos con lo que esta entre 2 palabras

Publicado por Borja (4 intervenciones) el 24/02/2016 09:55:21
Hola,

El archivo1.txt que te he escrito es un ejemplo, era para que se entendiera mejor, pero puede que lo haya liado mas. Voy a explicarte lo que quiero. Tengo unos archivos de texto que en una linea tienen 'Subject: Aqui va una frase'.

...
...
Subject: Aqui va una frase
...
...

Lo que quiero es que cada archivo de texto se renombre como el parametro Subject, en este caso, 'Aqui va una frase.txt'.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

renombrar archivos con lo que esta entre 2 palabras

Publicado por Antoni Masana (269 intervenciones) el 24/02/2016 12:40:15
Si he entendido bien lo que quieres es esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
 
IF not exist .\Nuevo\nul MD .\Nuevo
 
For %%a in (*.txt) do call :Trata %%a
goto :EOF
 
:Trata
   For /F "delims=*" %%b in (%1) do call :Busca %1 "%%b"
   goto :EOF
 
:Busca
   set Fch=%1
   set Reg=%2
   set Reg=%Reg:~1,-1%
   set Sub=%Reg:~0,8%
   Set Nom=%Reg:~9%
 
   if "%Sub%" == "Subject:"  move %Fch% "Nuevo\%Nom%.txt" >nul

Que hace:

Linea
3 - Crea un directorio para mover los ficheros renombrados.
Si el fichero con el nuevo nombre lo dejas en el mismo sitio el For lo tratara 2 veces y la segunda se producida un error.
5 - El primer FOR Busca los archivos .TXT uno a uno y para cada fichero le pasa el control a :Trata
9 - Trata línea a línea el fichero recibido y para cada registro le pasa el control a :Busca
13 y 14 - asigna los parámetros pasados a variables.
15 - Quita las comillas
16 - Asigna los primeros 8 caracteres a una variable.
17 - Asigna el resto de texto a otra variable
19 - Si la primera variable es igual a "Subject:" mueve el fichero a la nueva ubicación cambiando el nombre.

Puedes cambiar el MOVE por un COPY poder repetir el proceso si hay algún fallo.
Si el destino ya existe preguntara si quieres sobrescribir, para evitar la pregunta pon el parámetro /Y

Ejemplo

1
2
3
if "%Sub%" == "Subject:"  move /Y %Fch% "Nuevo\%Nom%.txt" >nul
o
if "%Sub%" == "Subject:"  copy /Y %Fch% "Nuevo\%Nom%.txt" >nul


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

renombrar archivos con lo que esta entre 2 palabras

Publicado por Borja (4 intervenciones) el 25/02/2016 10:20:03
Hola,

Al ejecutarlo me sale "La sintaxis del comando no es correcta". He probado con 'move' y 'copy' y nada.

He modificado algunas cosas del programa ya que lo que quiero es q se renombren esos mismos archivos de texto y no hacer copia, pero aún así me sale ese error. De que puede tratarse? Gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@echo off
 
For %%a in (*.txt) do call :Trata %%a
 
goto :EOF
 
:Trata
 
   For /F "delims=*" %%b in (%1) do call :Busca %1 "%%b"
 
   goto :EOF
 
:Busca
 
   set Fch=%1
 
   set Reg=%2
 
   set Reg=%Reg:~1,-1%
 
   set Sub=%Reg:~0,8%
 
   Set Nom=%Reg:~9%
 
   if "%Sub%" == "Subject:"  ren %Fch%.txt %Nom%.txt
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

renombrar archivos con lo que esta entre 2 palabras

Publicado por Antoni Masana amasana@hotmail.com (269 intervenciones) el 25/02/2016 13:12:42
No veo tu bat completo.

Este bat funciona en Windows 7, si tienes una versión anterior puede que alguna cosa no funcione pero creo que estas características son válidas desde Windows XP.

Prueba lo siguiente: en la primera línea del bat cambia el @echo off por @echo on

despúes ejecuta el bat de la siguiente forma:

1
C:\> Programa.bat >C:\Programa.log 2>&1

Con estas dos acciones se puede ver lo que hace el BAT y si hay un error donde esta y cual es.

Enviame el BAT y el LOG y lo reviso.

Sobre no mover los ficheros renombrados puede pasar esto:

Tengo varios ficheros de texto que deseo renombrar añadiendo a la izquierda del nombre x_

Lista de ficheros original

1
2
3
4
5
FILE_1.TXT
FILE_2.TXT
FILE_3.TXT
FILE_4.TXT
FILE_5.TXT

Espero conseguir esto

1
2
3
4
5
x_FILE_1.TXT
x_FILE_2.TXT
x_FILE_3.TXT
x_FILE_4.TXT
x_FILE_5.TXT

Ejecuto el siguiente BAT

1
2
@echo off
FOR %%a in (*.TXT) DO REN %%a x_%%a

Este es el resultado real que disto mucho de lo que deseo:

1
2
3
4
5
x_FILE_2.TXT
x_FILE_3.TXT
x_FILE_4.TXT
x_FILE_5.TXT
x_x_FILE_1.TXT

El primer fichero lo ha renombrado dos veces.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

renombrar nombre de archivo eliminando 0 de la izquierda

Publicado por Alberto (1 intervención) el 04/03/2016 16:09:08
Buenas tardes,

primero decir que es la primera vez que escribo en este Foro, soy bastante novato con en el lenguaje Bat. espero que me puedan ayudar:

dentro de una misma carpeta tengo varios archivos (*Jpg y *Swf) que pueden estar nombrados del 0001.* al 1000.* me gustaría tener un proceso bat que a la hora de ejecutarlo renombre los archivos de toda la carpeta quitando los ceros de la izquierda, es decir:

tengo en carpeta los siguientes archivos:

0001.jpg
0009.jpg
0152.jpg
0556.jpg

cuando ejecute el Bat que me haga un rename y me deje los archivos asi:

1.jpg
9.jpg
152.jpg
556.jpg

he buscado en otros foros y he dado con una solución pero lo que hace es eliminarme los "0" de entre medio también (1502->152)

podrían ayudarme porfavor??

graciasssssss!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

renombrar nombre de archivo eliminando 0 de la izquierda

Publicado por Antoni Masana (269 intervenciones) el 07/03/2016 13:02:58
Deberías incluir la pregunta fuera de consulta.

Tu pregunta no tiene que ver con la anterior y puesta aquí es muy probable que pase desapercibida.

Si la pones como nueva consulta te responderé a tu problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar