Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Christopher Bryan en 9 Septiembre 2013, 21:35 pm



Título: ¿Cómo puedo detectar una carpeta sin nombre?
Publicado por: Christopher Bryan en 9 Septiembre 2013, 21:35 pm
Estoy haciendo una aplicación en BATCH que verifica la existencia de ciertos archivos. Pero necesito detectar cuando una carpeta se llama: " " (combinación [ALT+255]), he intentato con:

Código:
if exist "[RUTA]\ " (ren "[RUTA]\ " "Recovered_Files")

Pero a la hora de probarlo, no le cambia el nombre a la carpeta. ¿Entonces cómo es que detecto ese caracter y cambio el nombre?


Título: Re: ¿Cómo puedo detectar una carpeta sin nombre?
Publicado por: Eleкtro en 9 Septiembre 2013, 21:51 pm
¿cómo es que detecto ese caracter y cambio el nombre?[/size]

Código
  1. CHCP 1252 1>NUL
  2. Set "DIRECTORY=."
  3. IF Exist "%DIRECTORY%\á" (Rename "%DIRECTORY%\á" "Recovered_Files")

-> Code Page Identifiers (http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756%28v=vs.85%29.aspx)

Saludos


Título: Re: ¿Cómo puedo detectar una carpeta sin nombre?
Publicado por: Christopher Bryan en 9 Septiembre 2013, 22:08 pm
Código
  1. CHCP 1252 1>NUL
  2. Set "DIRECTORY=."
  3. IF Exist "%DIRECTORY%\á" (Rename "%DIRECTORY%\á" "Recovered_Files")

-> Code Page Identifiers (http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756%28v=vs.85%29.aspx)

Saludos

Hola, acabo de probar el código, pero no funciona para lo que quiero adaptarlo, mira, aquí está lo que quiero que haga:

Código:
@ECHO OFF
MODE CON cols=78 lines=25
TITLE Mostrar archivos ocultos
COLOR 0B
SET /P UNIDAD=Digita solamente la letra de la unidad a procesar:
attrib -s -r -h %UNIDAD%:\*.* /s /d

(aqui quiero que haga esa función)

Entonces, cuando el usuario digíta una letra de unidad (Por ejemplo: E), el programa tiene que desocultar los archivos de la unidad, verificar si existe la carpeta aparentemente sin nombre y renombrarla. ¿Cómo adapto entonces eso siguiendo este código?


Título: Re: ¿Cómo puedo detectar una carpeta sin nombre?
Publicado por: Eleкtro en 10 Septiembre 2013, 01:30 am
¿Cómo adapto entonces eso siguiendo este código?[/size]

Código
  1. @ECHO OFF & CHCP 1252 1>NUL & REM Modifico el código de ágina al CP WINDOWS-1252.
  2.  
  3. REM by .:: Elektro H@cker ::.
  4. REM para los usuarios de ElHacker.net
  5. REM
  6. REM Asegurarse de guardar este script en codificación ANSI, no UTF, no Unicode.
  7. REM
  8.  
  9. :: # WMI Class Win32_LogicalDisk Help
  10. ::
  11. :: Drivetype 2: Removable
  12. :: Drivetype 3: Local hard disk
  13. :: Drivetype 4: Network disk
  14. ::
  15. :: For Syntax: wmic logicaldisk get caption^,drivetype ^| FIND "(DriveType)      "
  16.  
  17. REM Filtro el output del comando WMIC.
  18. For /F %%# in (
  19. 'wmic logicaldisk get caption^,drivetype ^| FIND "3      "'
  20. ) Do (
  21. REM Saco las letras de los dispositivos disponibles.
  22. Call Set "Drives=%%DRIVES%%%%#"
  23. )
  24.  
  25. REM Elimino el caracter ":".
  26. Set "Drives=%DRIVES::=%"
  27.  
  28. REM Pregunto al usuario.
  29. Choice /C %DRIVES% /M "Elige una unidad:"
  30.  
  31. REM Seteo la posición inicial del Substring para sacar la letra elegida por el usuario.
  32. Set /A "DriveIndex=%ERRORLEVEL% - 1"
  33.  
  34. REM Finálmente seteo la letra elegida por el usuario.
  35. Call Set "Drive=%%DRIVES:~%DriveIndex%,1%%"
  36.  
  37. REM Retiro todos los atributos de los archivos y carpetas.
  38. Attrib -a -r -s -h -i /D /S "%Drive%:\*"
  39.  
  40. REM Proceso todas las carpetas de la unidad para renombrar las que contienen el caracter (ALT+255)
  41. REM La expresión "%Drive%:\* " no contiene un simple caracter de Espacio, usa el caracter ALT+255.
  42. For /D /R %%# in ("%Drive%:\* ") Do (
  43. (
  44.          Rename "%%~#" "Recovered_Files"
  45.        ) || (
  46.          Call Rename "%%~#" "Recovered_Files %%RANDOM%%"
  47.        )
  48. )
  49.  
  50. Pause&Exit

Saludos




EDITO:

Código:
attrib -s -r -h %UNIDAD%:\*.* /s /d

Eso no sé donde lo habrás visto pero es un fallo muy típico de todos los novatos,
tu intentas procesar carpetas y archivos pero ese patrón de búsqueda no procesa carpetas, pues solo procesará carpetas que contengan un punto "." en el nombre.

Lee sobre los asteriscos, las wildcards.

Saludos