¿Cómo puedo detectar una carpeta sin nombre?

Iniciado por Christopher Bryan, 9 Septiembre 2013, 21:35 PM

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

Christopher Bryan

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:

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?
while(!success)
{
     KeepTrying(objective);
     if(die)
         break;
}

Eleкtro

Cita de: Christopher Bryan en  9 Septiembre 2013, 21:35 PM¿cómo es que detecto ese caracter y cambio el nombre?[/size]

Código (dos) [Seleccionar]
CHCP 1252 1>NUL
Set "DIRECTORY=."
IF Exist "%DIRECTORY%\á" (Rename "%DIRECTORY%\á" "Recovered_Files")


-> Code Page Identifiers

Saludos








Christopher Bryan

Cita de: EleKtro H@cker en  9 Septiembre 2013, 21:51 PM
Código (dos) [Seleccionar]
CHCP 1252 1>NUL
Set "DIRECTORY=."
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:


@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?
while(!success)
{
     KeepTrying(objective);
     if(die)
         break;
}

Eleкtro

#3
Cita de: Christopher Bryan en  9 Septiembre 2013, 22:08 PM¿Cómo adapto entonces eso siguiendo este código?[/size]

Código (dos) [Seleccionar]
@ECHO OFF & CHCP 1252 1>NUL & REM Modifico el código de ágina al CP WINDOWS-1252.

REM by .:: Elektro H@cker ::.
REM para los usuarios de ElHacker.net
REM
REM Asegurarse de guardar este script en codificación ANSI, no UTF, no Unicode.
REM

:: # WMI Class Win32_LogicalDisk Help
::
:: Drivetype 2: Removable
:: Drivetype 3: Local hard disk
:: Drivetype 4: Network disk
::
:: For Syntax: wmic logicaldisk get caption^,drivetype ^| FIND "(DriveType)      "

REM Filtro el output del comando WMIC.
For /F %%# in (
'wmic logicaldisk get caption^,drivetype ^| FIND "3      "'
) Do (
REM Saco las letras de los dispositivos disponibles.
Call Set "Drives=%%DRIVES%%%%#"
)

REM Elimino el caracter ":".
Set "Drives=%DRIVES::=%"

REM Pregunto al usuario.
Choice /C %DRIVES% /M "Elige una unidad:"

REM Seteo la posición inicial del Substring para sacar la letra elegida por el usuario.
Set /A "DriveIndex=%ERRORLEVEL% - 1"

REM Finálmente seteo la letra elegida por el usuario.
Call Set "Drive=%%DRIVES:~%DriveIndex%,1%%"

REM Retiro todos los atributos de los archivos y carpetas.
Attrib -a -r -s -h -i /D /S "%Drive%:\*"

REM Proceso todas las carpetas de la unidad para renombrar las que contienen el caracter (ALT+255)
REM La expresión "%Drive%:\* " no contiene un simple caracter de Espacio, usa el caracter ALT+255.
For /D /R %%# in ("%Drive%:\* ") Do (
(
         Rename "%%~#" "Recovered_Files"
       ) || (
         Call Rename "%%~#" "Recovered_Files %%RANDOM%%"
       )
)

Pause&Exit


Saludos





EDITO:

Cita de: Christopher Bryan en  9 Septiembre 2013, 22:08 PMattrib -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