Ms-Dos - Comando del

 
Vista:

Comando del

Publicado por Denis (12 intervenciones) el 31/10/2008 11:50:46
Hola tengo el siguiente problema para eliminar un archivo que tiene un nombre compuesto por espacios

Lo que hago es que con un for estraigo de un .txt el nombre del archivo con su extensión y los visualizo con pantalla de la siguiente forma

echo %%i %%j

Ejm Archivo prueba.log

luego quiero borrar el archivo que guardan estas dos variables indicando

del %%i%%j (El problema está en que no inserta los espacios en blanco y no lo puede eliminar pues el nombre del archivo en el directorio esta con espacios en blanco y aqui lo pega todo)

Ejm Archivoprueba.log

NECESITO SABER COMO INSERTO UN ESPACIO EN BLANCO DENTRO DEL COMANDO DEL

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

RE:Comando del

Publicado por amparitohijo (94 intervenciones) el 31/10/2008 12:19:11
Buenas.

Según extraigo de tu explicación, lo que quieres es lo siguiente:

Tienes un archivo llamado Archivo Prueba.txt

Con un FOR /F extraes el nombre. Creo que aquí está el fallo. ¿Por qué no lo extraes completamente, con extensión y todo, en una sola variable? En vez de utilizar 2 variables (una para el nombre y otra para la extensión, utiliza sólo una para todo.
Por ejemplo:
Supongamos que tienes la carpeta C:pruebas con el archivo "archivo prueba.txt". Para eliminar los archivos .TXT, yo seguiría los siguientes pasos:

@echo off
dir /b C:pruebas*.txt > lista.tmp
FOR /F "tokens=1" %%a in (lista.tmp) DO (del "C:pruebas\%%a")
del lista.tmp
exit

Recuerda poner las comillas.

Espero que sea esto lo que buscas. Coméntanos qué tal te fue. Salu2
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

RE:Comando del

Publicado por amparitohijo (94 intervenciones) el 31/10/2008 12:36:13
Buenas. No me he dado cuenta de poner las barras. Te lo repito con guion bajo en vez de las barras (tu ya me entiendes, jejeje):

@echo off
dir /b C:_pruebas_*.txt > lista.tmp
FOR /F "tokens=1" %%a in (lista.tmp) DO (del "C:_pruebas_%%a")
del lista.tmp
exit

Salu2
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

RE:Comando del

Publicado por Denis (94 intervenciones) el 31/10/2008 17:16:10
Hola gracias por contestar

Pues tu código es tal cual como yo lo tenia anteriormente pero al momento de decirle del %%a funciona siempre y cuando el nombre del archivo no tenga un espacio en blanco, si contiene un espacio en blanco tengo que usar la otra variable lo que pasa es que al decirle del %%a%%b me pega todo el nombre del archivo y no deja el espacio en blanco

Saludos y 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

RE:Comando del

Publicado por amparitohijo (94 intervenciones) el 31/10/2008 17:38:30
Buenas de nuevo.

¿Seguro que en tu "FOR" no tienes puesto un delims con un espacio en blanco tras el igual? ("TOKENS=1 DELIMS= ")
Si es así, quita cualquier "DELIMS" que tengas, ya que nos interesa almacenar el nombre del archivo (toda la línea) en una sola variable, y no %%a%%b

Otra cosa... Fíjate para próximas ocasiones en los redireccionadores y los espacios entre medias. Esto es:

ECHO hola > LOG.TXT no es igual que
ECHO hola> LOG.TXT

supongamos que el caracter "espacio" está representado por guión bajo _
La primera sentencia escribiría "hola_", mientras que la segunda escribiría "hola" a secas

A ver si van a ir por ahí los tiros...
Salu2
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

RE:Comando del

Publicado por Armando Nava  (194 intervenciones) el 01/11/2008 17:05:10
Saludos

Estuve viendo el bat de amparito, creo que le falta incluir algunas variables.

Para mi protección use un ECHO para simular la salida
Originalmente tenemos:
----------------------------------
@echo off
dir /b *.txt > lista.tmp
FOR /F "tokens=1" %%a in (lista.tmp) DO (echo del "%%a")
del lista.tmp
----------------------------------
del "banclinea20081008.txt"
del "Fecha.txt"
del "ip1.txt"
del "ip2.txt"
del "ip3.txt"
del "ips.txt"
del "lista"
del "lista"
-----------------------------------

Pero si le agregamos más variables

-------------------------------------
@echo off
dir /b *.txt > lista.tmp
FOR /F "tokens=1,2,3,4" %%a in (lista.tmp) DO (echo del "%%a %%b %%c %%d")
del lista.tmp
-------------------------------------
del "banclinea20081008.txt "
del "Fecha.txt "
del "ip1.txt "
del "ip2.txt "
del "ip3.txt "
del "ips.txt "
del "lista detalles.txt "
del "lista varios deta lux.txt"
------------------------------------

Magia de hombre blanco, tu comando aparece completo, pero entonces si el nombre del archivo tiene demasiados espacios en blanco, tienes que usar mas variables.

Por ultimo tenemos la opción de usar nombres cortos, y creo que es lo más simple como veras a continuación:

-----------------------------------------
for %a in (*) do @echo %~sa
----------------------------------------

Direccionas la instrucción anterior a un archivo y luego usas el for que ya tenias.

Espero te sea de utilidad, solo ten cuidado con el borrado de archivos.
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

RE:Comando del (Observaciones)

Publicado por Armando Nava  (194 intervenciones) el 01/11/2008 17:59:20
Saludos

Le comento que se puede usar hacer todo en una misma instrucción, o direccionar el comando.
------------------------------------
for %a in (*.txt) do del %~sa
------------------------------------

Si se quiere direccionar la salida a un archivo para despues usarla, lleva doble >>
------------------------------------
for %a in (*.txt) do @echo %~sa >> list.org
------------------------------------

Sin embrago cuando guardo esta instrucción en un archivo con extension BAT me marca errores, si alguien sabe que esta mal, favor de comunicarlo.
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

Solucion para el Comando DEL

Publicado por Antoni Masana (295 intervenciones) el 02/11/2008 11:39:49
La solucion es tan simple como la siguiente:

C:\> FOR /F "DELIMS=;" %A IN (FICHERO.TXT) DO DEL "%A"

o dentro de un bat

@ECHO OFF
FOR /F "DELIMS=;" %%A IN (FICHERO.TXT) DO DEL "%%A"

Usar en el FOR el modificador /F y como delimitador el "punto y coma" que no es un caracter valido para nombre de fichero y el %A entre comillas para el DEL

Pero me pregunto

- ¿Por que la lista de ficheros ha borrar esta dentro de un fichero?
- ¿No es mas practico hacer DEL *.LOG, por poner un ejemplo?

Algunos ejemplos de problemas de nombres de directorios o ficheros con espacios:

Para ejecutar:

"C:\Documents and Settings\Programa\Mi programa.exe"

Para ver:

DIR "C:\Documents and Settings\Programa\Mi programa.exe"

Para borrar:

DEL "C:\Documents and Settings\Programa\Mi programa.exe"
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

Sigue error el Comando DEL

Publicado por Denis (12 intervenciones) el 03/11/2008 09:32:17
Gracias a todos por vuestro interés aquí coloco parte del código donde realizo la acción del

FOR /f "tokens=4*" %%i in (archfecha.txt) do (
echo %%i >> archfechadel.txt
del %%i
)

Archfecha es un archivo plano en donde almaceno sólo aquellos archivos .log que cumplen ciertas condiciones para ser eliminados por eso no puedo hacer un del *.log
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

RE:Sigue error el Comando DEL

Publicado por amparitohijo (94 intervenciones) el 03/11/2008 12:18:31
Hola de nuevo, Denis.
¿Por qué tokens=4* ?
Si en el archivo tienes almacenado el nombre de archivo único, del tipo:

archivo uno.txt
archivo dos.log
copia de archivo dos.bck

escribe el for de la siguiente forma:

FOR /F "tokens=1" %%i in (archfecha.txt) DO (echo %%i>> archfechadel.txt & del "%%i")

Pruébalo, a ver qué tal.

Salu2
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

RE:Sigue error el Comando DEL

Publicado por Denis (12 intervenciones) el 03/11/2008 12:50:30
Gracias amparito pero el problema persiste

Ejm

Archivo uno.txt

La línea que tu escribiste sólo toma la palabra Archivo y no puede borrar porque ese no es el nombre completo del archivo.

El %%i sólo almacena la primera palabra antes del espacio en blanco
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

RE:Sigue error el Comando DEL

Publicado por amparitohijo (94 intervenciones) el 03/11/2008 17:30:27
Hola que tal.

Perdona la tardanza, pero no he podido mirarlo antes...

en la línea que te mando, debería haber puesto un "delims=", para que no utilice ningun caracter como delimitador.

El resultado sería:
FOR /F "tokens=1 delims=" %%i in (archfecha.txt) DO (echo %%i>>archfechadel.txt & del "%%i")

Ya está probado y funciona ok

Salu2
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

Gracias a todos por vuestra ayuda

Publicado por Denis (12 intervenciones) el 04/11/2008 09:45:57
Muchisimas Gracias a todos por vuestro interés, especialmente a amparitohijo

Un Saludo
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