Arrastrar lista y comprobar si existen archivos. [Batch]

Iniciado por Dany3j, 31 Julio 2011, 18:48 PM

0 Miembros y 1 Visitante están viendo este tema.

Dany3j

hello tengo una duda como haria para arrastrar una lista de archivo en un txt  un bat
Pero que compruebe si existen. si existen imprimir en pantalla.

un ejemplo

Primero ejecuto el bat

y me imprima en pantalla
Por favor arrastre el archivo.txt con la lista al esta pantalla.

luego

Comprobando existencia de archivos y carpetas


Archivo   test.algo existe
archivo1  test2.algo existe
archivo2  test3.algo no existe.
Directorio test4 existe
directorio test5

y preguntar

deseo borrar los archivos encontrado
S= si
N = no

si se presiona no devolver a la principio
si se presiona  si borrar los archivos.

imprimir

archivo test1.algo -- borrados
directorio test2.algo  --- borrado
archivo test3.algo ---- no se pudo borrar
directorio test5 --- no se pudo borrar

luego de finalizar que se presione una tecla y se cierre el cmd. y que todo el proceso de busqueda borrado no borrado se guarde en un txt que se abra al cerrar el cmd.

Gracias de antemano.  ;)

"Pensando en Batch" XD

leogtz

#1
¿Para qué quieres hacer esto?

Prueba esto:

Código (dos) [Seleccionar]
@echo off
set /p "lista=Lista : "
pushd \
for /f "tokens=*" %%_ in ('type "%lista%"') do (
dir /b /s "%%_" > nul 2>&1 && (
echo %%_ Existe
echo %%_ >> "%userprofile%\busqueda.txt"
rem Así evitamos que siga buscando en todo el disco duro...
rem Nos basta saber por ahora que sí está el archivo.
call:continue
) || (
echo %%_ No existe
)
)

:prompt
set /p "respuesta=Desea borrar los archivos encontrados ? s/n : "
if not defined respuesta (goto:prompt)
rem Si dice que "n" salimos.
if "%respuesta%"=="s" (
rem Borrar archivos:
for /f "tokens=*" %%_ in ('type "%userprofile%\busqueda.txt"') do (
del /f /q /s "%%_" && (
echo "%%_" -- Borrado
) || (
echo "%%_" -- No borrado
)
)
) else (
exit /b 0
)
popd

:continue
goto:eof


Puedes partir de ahí, probé el código y parece que funciona.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Dany3j

La verdad no ha funcionado.. cuando arrastro la lista a la pantalla del cmd.

Me sale un error el sistema no puede hallar el archivo especificado
Error mientras se procesaba: C:Documents.
Me sale un error el sistema no puede hallar el archivo especificado
Error mientras se procesaba: and
Me sale un error el sistema no puede hallar el archivo especificada.
Desea borrar los archivos encontrados ? s/n : D


A que se debe esto Leo y pues todavia no tengo ningún fin para esto no mas se me ocurrio. algo que hiciera esto.  :xD
"Pensando en Batch" XD

leogtz

Mmmm, el problema son las rutas con espacios, sólo eso, porque yo arrastré lista.txt con la siguiente ruta:
c:\users\leo\lista.txt y funcionó perfecto, luego lo checo con más detenimiento.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

SuperDraco

Con todo lo que te está ayudando Leo, y lo que te he ayudado yo, y los batch que te he pasado, y los manuales del foro... Ya es hora de que intentes hacer un batch por ti mismo, que lo que pides es fácil.

he probado el código de Leo y funciona con rutas con espacios.

saludos
No he vuelto, solo estoy de paso.

Dany3j

Si tienes razon  :( Pitoloko lo que pasa que a veces no entiendo algunas cosas. bueno voy a ponerme a trabajar mas y solo voy a perdir ayuda cuando en verdad la necesite..  :rolleyes:

Y a mi no me funciona sera porque tengo xp.  :o
"Pensando en Batch" XD

poc

Aunque hace ya muchos años de este post, que sepáis que me ha servido mucho!!

Muchisimas gracias!