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?
Cita de: Christopher Bryan en 9 Septiembre 2013, 21:35 PM¿cómo es que detecto ese caracter y cambio el nombre?[/size]
CHCP 1252 1>NUL
Set "DIRECTORY=."
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
Cita de: EleKtro H@cker en 9 Septiembre 2013, 21:51 PM
CHCP 1252 1>NUL
Set "DIRECTORY=."
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:
@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?
Cita de: Christopher Bryan en 9 Septiembre 2013, 22:08 PM¿Cómo adapto entonces eso siguiendo este código?[/size]
@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