elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  ¿Cómo puedo detectar una carpeta sin nombre?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo puedo detectar una carpeta sin nombre?  (Leído 3,067 veces)
Christopher Bryan

Desconectado Desconectado

Mensajes: 4



Ver Perfil WWW
¿Cómo puedo detectar una carpeta sin nombre?
« 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?


En línea

while(!success)
{
     KeepTrying(objective);
     if(die)
         break;
}
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: ¿Cómo puedo detectar una carpeta sin nombre?
« Respuesta #1 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

Saludos


En línea



Christopher Bryan

Desconectado Desconectado

Mensajes: 4



Ver Perfil WWW
Re: ¿Cómo puedo detectar una carpeta sin nombre?
« Respuesta #2 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

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?
En línea

while(!success)
{
     KeepTrying(objective);
     if(die)
         break;
}
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: ¿Cómo puedo detectar una carpeta sin nombre?
« Respuesta #3 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
« Última modificación: 9 Octubre 2013, 00:35 am por EleKtro H@cker » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Puedo detectar si el proxy que uso es malicioso?
Seguridad
fikus 1 2,188 Último mensaje 20 Abril 2015, 19:25 pm
por engel lex
[VBS] Detectar nombre en renombrado masivo
Scripting
ovichan 0 1,685 Último mensaje 28 Julio 2015, 00:04 am
por ovichan
Como obtener el nombre de la carpeta actual BAT | Ayuda
Scripting
cat26 1 4,731 Último mensaje 27 Enero 2019, 10:42 am
por FurioMoltisanti
Como puedo descargar una carpeta de un tar
Dudas Generales
Pedro122h 7 4,924 Último mensaje 1 Mayo 2021, 01:04 am
por EdePC
No puedo eliminar un juego EA el FIFA 2023 no puedo borrar la carpeta
Juegos y Consolas
Terminator5 0 3,354 Último mensaje 13 Diciembre 2023, 16:40 pm
por Terminator5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines