Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Eleкtro en 5 Mayo 2012, 11:29 am



Título: [Reto Batch] It's a dir?
Publicado por: Eleкtro en 5 Mayo 2012, 11:29 am
Aquí pueden comentar todo lo que quieran, sus dudas, avances o soluciones acerca del siguiente reto:


Reto Nº 3

Nombre:           It's a dir? (Elektro H@cker)
Dificultad:        2/10
Objetivo:         Comprueba todos los archivos de un directorio, Verifica si son un directorio o un archivo, Y muestra la verificación al lado del nombre del archivo/directorio.
Indicaciones:  Debe comprobar directorios y archivos.
Pistas:              Se puede realizar con un solo comando.
Ejemplo:
                         (http://img14.imageshack.us/img14/4025/prtscrcapturedk.jpg)
Solución:         Pedir por mensaje privado


Título: Re: [Reto Batch] It's a dir?
Publicado por: -- KiLiaN -- en 5 Mayo 2012, 18:30 pm
Ya he visto la solución, yo por mi parte voy a buscar alguna manera alternativa de pasar el reto (aunque obviamente sera mas larga y lenta) si no no tiene gracia xD


Título: Re: [Reto Batch] It's a dir?
Publicado por: juan196518 en 5 Mayo 2012, 21:39 pm
puede ser cualquier directorio o tiene que ser uno espesificado antes?


Título: Re: [Reto Batch] It's a dir?
Publicado por: Puntoinfinito en 5 Mayo 2012, 22:22 pm
Quien es el que ha podido solucionar el reto?


Título: Re: [Reto Batch] It's a dir?
Publicado por: juan196518 en 5 Mayo 2012, 23:41 pm
Hay?
(http://img534.imageshack.us/img534/9847/programazc.jpg) (http://imageshack.us/photo/my-images/534/programazc.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)


Título: Re: [Reto Batch] It's a dir?
Publicado por: Stakewinner00 en 6 Mayo 2012, 00:17 am
mirare si puedo hacerlo


Título: Re: [Reto Batch] It's a dir?
Publicado por: Eleкtro en 6 Mayo 2012, 05:18 am
puede ser cualquier directorio o tiene que ser uno espesificado antes?

Hombre, si funciona con un directorio deberia funcionar con cualquier otro, la idea es que funcione con el DIR que el usuario quiera :P


Hay?

Demasiados datos! solo pido que se muestre la comprobacion y el nombre del archivo/carpeta, Si consigues eliminar la fecha, la hora, y el tamaño, Para que solo se muestre así lo daré por válido, sino no tiene gracia :P:
Código
  1. < DIR > nombre...
  2.        nombre....
  3. < DIR > nombre...

Salu2


Título: Re: [Reto Batch] It's a dir?
Publicado por: juan196518 en 6 Mayo 2012, 05:50 am
Logre quitar fecha hora y tamaño pero no se como hacer lo de la comprobacion igual cuenta??  
Código
  1. @echo off
  2.  
  3. dir /B /O:n C:\Users\Gustavo\Desktop\PhotoshopPortable
  4.  
/B es para que no salga la fecha de creacion, hora de creacion y Tamaño
/O:n es para que ordene los archivos alfabeticamente
 ;-)
(http://img72.imageshack.us/img72/5281/reto4.jpg) (http://imageshack.us/photo/my-images/72/reto4.jpg/)

EleKtro hay?


Título: Re: [Reto Batch] It's a dir?
Publicado por: Eleкtro en 6 Mayo 2012, 06:35 am
Logre quitar fecha hora y tamaño pero no se como hacer lo de la comprobacion igual cuenta??  
EleKtro hay?

Lo siento pero no me sirve amigo, Está mostrando tanto archivos como directorios, Bien, Pero falta la comprobación que indique los que son archivos, y los que son carpetas ._.

Me da igual si se indica como en mi ejemplo (True, false) o ("Si" "NO") o ("1" "0") o ("Archivo, "Directorio"), Pero hay que indicarlo xD.

Un saludo!


Título: Re: [Reto Batch] It's a dir?
Publicado por: juan196518 en 6 Mayo 2012, 06:39 am
Ok haora trato si lo logro publico


Título: Re: [Reto Batch] It's a dir?
Publicado por: zambita en 6 Mayo 2012, 06:46 am
elektro me pasas la solucion por mp plis


Título: Re: [Reto Batch] It's a dir?
Publicado por: Eleкtro en 6 Mayo 2012, 07:00 am
elektro me pasas la solucion por mp plis


Listo :)

Como dije se puede hacer con un solo comando xD

Salu2


Título: Re: [Reto Batch] It's a dir?
Publicado por: juan196518 en 6 Mayo 2012, 07:14 am
Hora que me doy cuenta tienes razon no es dir.
Código
  1. @echo off
  2. Set "Ruta=%CD%"
  3. ..........................
  4.  
::) Elektro porfavor decime que esta esta bien xDDD
(http://img543.imageshack.us/img543/7734/alfinx.jpg) (http://imageshack.us/photo/my-images/543/alfinx.jpg/)



Título: Re: [Reto Batch] It's a dir?
Publicado por: Eleкtro en 6 Mayo 2012, 07:18 am
Hora que me doy cuenta tienes razon no es dir.

 ::) Elektro porfavor decime que esta esta bien xDDD


Te edito el mensaje porque esa parte la has copiado del todo :/... Se trata de aprender pero bueno, The winner is you! xD

Salu2


Título: Re: [Reto Batch] It's a dir?
Publicado por: juan196518 en 6 Mayo 2012, 07:20 am
 ::)


Título: Re: [Reto Batch] It's a dir?
Publicado por: ELVJop en 6 Mayo 2012, 11:43 am
Si tenemos la solucion despues te la pasamos igal no??


Título: Re: [Reto Batch] It's a dir?
Publicado por: -- KiLiaN -- en 6 Mayo 2012, 12:03 pm
Alguien miro tu solución  :silbar: xD


Título: Re: [Reto Batch] It's a dir?
Publicado por: Eleкtro en 6 Mayo 2012, 12:12 pm
*****, creo que le tendría que haber enviado un MP a Elektro xD...

Joder, puntoinfinito, Al menos ten el detalle de borrar la tabulación de la solución original !!

Si copiais no aprendeis nada... hallá vosotros       :-/

1 point for you!

EDITO: voy a subir las soluciones con contraseña, ale xD, a ver kien es el listo que hace el reto nº 10 (dentro d poco posteo) :P

Salu2


Título: Re: [Reto Batch] It's a dir?
Publicado por: Stakewinner00 en 6 Mayo 2012, 12:28 pm
no sabia la existencia de este comando forfiles


este verano aver si aparte de ahcking puedo ponerme con scripts



EDITO: voy a subir las soluciones con contraseña, ale xD, a ver kien es el listo que hace el reto nº 10 (dentro d poco posteo) :P

Salu2

Ami se me da mejor eso de romper programas con password si lo cuelgas con contraseña mejor aprendere el doble :D

PD:Modifique el bat para k solo mostrara las carpetas o archivos era para provar un poco como iva el comando forfiles

Código:
@Echo OFF
REM Ahora si que si e.e     
title Reto - It's A dir?
color e
Set "Dir=%CD%"
Echo Directorio: %Dir%
echo MOSTRAR ARCHIVOS 1
ECHO MOSTRAR CARPETAS 2
set /P m=::
if %m%==1 goto a
if %m%==2 goto b
:a
forfiles /P "%dir%" /C "Cmd /C if "@isdir"==TRUE echo CARPETAS    @file"
goto c
:b
forfiles /P "%dir%" /C "Cmd /C if "@isdir"==FALSE echo ARCHIVOS    @file"
:c
pause >NUL
Exit


Título: Re: [Reto Batch] It's a dir?
Publicado por: Eleкtro en 6 Mayo 2012, 12:31 pm
no sabia la existencia de este comando forfiles

Esa era la intención de este reto, aprender ese comando :P


Título: Re: [Reto Batch] It's a dir?
Publicado por: -- KiLiaN -- en 6 Mayo 2012, 12:44 pm
Aqui esta la mia, mucho mas larga y lenta que con forfiles pero bue..como había visto tu solución no quise hacerlo igual..

Código
  1. @echo off
  2. For /F %%i in ('dir /b /A:D') do (echo 1 %%i >> dire.tmp)
  3. For /F %%e in ('dir /B /A:A') do (echo 0 %%e >> archi.tmp)
  4. type dire.tmp >> archi.tmp | sort
  5. For /F "tokens=1,2" %%f in (archi.tmp) do (
  6. if %%f EQU 1 echo [True] %%g
  7. if %%f EQU 0 echo [False] %%g)
  8. del archi.tmp dire.tmp
  9.  


Título: Re: [Reto Batch] It's a dir?
Publicado por: Puntoinfinito en 6 Mayo 2012, 13:16 pm
Tienes razon xd...
Uo, me he quedado  :o, en ningún tutorial ni manual básico de Batch hablan de "Forfiles" (al menos los que yo he visitado)...
Encima ni que busques por el cmd no hay ni una pista de este comando.
Modo animado ON.


Título: Re: [Reto Batch] It's a dir?
Publicado por: -- KiLiaN -- en 7 Mayo 2012, 10:59 am
Forfiles solo viene en windows7 si tienes xp no te va a funcionar..


Título: Re: [Reto Batch] It's a dir?
Publicado por: Puntoinfinito en 7 Mayo 2012, 17:59 pm
Ou, que fail.. deberia estar todo en todo, para no crear problemas, siempre igual :/


Título: Re: [Reto Batch] It's a dir?
Publicado por: NekoOs en 28 Junio 2012, 04:39 am
Hora que me doy cuenta tienes razon no es dir.

No te desanimes juan19658 despues de todo si es DIR
Se que ya ha pasado tiempo sin embargo quisiera contribuir al notar que la respuesta no esta expuesta aqui  ;D
(http://photos3.pix.ie/03/BD/03BD1E35C9604BBBA903643AE27E52E8-0000351152-0002911326-00800L-6B20FA5FD9A74376A42A598749893496.png)
La solucion es relativamente sencilla:
Código
  1. DIR /AD /B


Título: Re: [Reto Batch] It's a dir?
Publicado por: leogtz en 30 Junio 2012, 19:58 pm
No estoy en Windows, pero algo así debería funcionar, bueno, quizás :p

Código
  1. cd dir && (
  2.    echo Es dir
  3. ) || (
  4.    echo No es un dir...
  5. )

Saludos.


Título: Re: [Reto Batch] It's a dir?
Publicado por: NekoOs en 1 Julio 2012, 08:19 am
No estoy en Windows, pero algo así debería funcionar, bueno, quizás :p

Código
  1. cd dir && (
  2.    echo Es dir
  3. ) || (
  4.    echo No es un dir...
  5. )

Saludos.
corrígeme si entiendo mal tu code:
Código
  1. cd dir && (             //cd=acceder a                 dir=carpeta llamada dir             &&=si se cumple
  2. echo Es dir             //escribir "es dir"
  3. ) || (                  //sino
  4. echo No es un dir       //escribir "No es un dir"
sin embargo la respuesta en caso de no ser un directorio sera "El sistema no puede hallar la ruta especificada" y obviamente escribiría "No es dir"
Aun asi es una solución  ;) quedaria aun mejor si tan solo agregaras un CLS que borre la respuesta de error del comando CD así:
Código
  1. cd dir && (
  2.    echo Es dir
  3. ) || (
  4.    cls
  5.    echo No es un dir...
  6. )
el único inconveniente es que solo evaluaría una carpeta llamada dir  :-\ y creo que el reto es reconocer solo los directorios contenidos en un lugar especifico. Por tanto insisto que la solución que plantee es mas acertada sin ánimos de crear polémica ni nada  ;D


Título: Re: [Reto Batch] It's a dir?
Publicado por: leogtz en 1 Julio 2012, 08:46 am
Sí, al uso de && y || en batch y en algunos lenguajes script se le llama ejecución condicional, podrías buscar un post que escribí sobre ello.

Código
  1. cd dir 2> nul && (
  2.    echo Es dir.
  3. ) || (
  4.    echo No es dir.
  5. )

Otra sería usar el comando pushd y popd para regresarse luego que ingreses al directorio.

A ver si funciona esto...

Código
  1. pushd dir 2> nul && (
  2.    echo Es dir
  3.    popd
  4. ) || (
  5.   echo No es dir.
  6. )


Título: Re: [Reto Batch] It's a dir?
Publicado por: Binary_Death en 22 Julio 2012, 00:00 am
Pues aquí mi solución:

Código:
@Echo Off
set/p "dpath=Path >> "
for /f "tokens=*" %%_ in ('dir /b "%dpath%"') do (
1>nul 2>&1, (dir /b /a:d "%dpath%" | findstr /r /i "^%%_$") && (
echo: TRUE %%_
) || (
echo: FALSE %%_
)
)
pause 1>nul & exit

Con fomato similar a la imagen de ejemplo.


Título: Re: [Reto Batch] It's a dir?
Publicado por: lufalas en 30 Marzo 2014, 01:58 am
Código
  1. @echo off
  2. forfiles /p %1 /c "cmd /c echo @file @isdir"
  3. pause 1>nul

Asumiendo que se le proporciona la ruta por parámetro.

Tengo que averiguar como hacer para que los nombres aparezcan sin dobles comillas.

Happy solving!


Título: Re: [Reto Batch] It's a dir?
Publicado por: Shell Root en 31 Marzo 2014, 18:13 pm
Código
  1. @echo off
  2. echo Con Comillas: %1
  3. echo Sin Comillas: %~1

Código
  1. C:\Documents and Settings\Administrador\tempcurso>astring "parametro de varias letras"
  2. Con Comillas: "parametro de varias letras"
  3. Sin Comillas: parametro de varias letras

:http://foro.elhacker.net/scripting/programacion_batch_avanzada_nuevo-t132924.0.html