Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Eleкtro en 10 Enero 2012, 05:02 am



Título: (SOLUCIONADO) [BATCH] ¿Como crear una variable de esta manera?...
Publicado por: Eleкtro en 10 Enero 2012, 05:02 am
Ya hice un post sobre este tema pero no lo encuentro por ningún lado xDDD y me vuelve a dar problemas.


necesito correr un script desde un .REG, osea que el script tiene que tener todas las sentencias en una sola línea, y en esa linea tengo que crear una variable, y usarla.

Ejemplo:

Código:
cmd.exe /k @echo off & For /F %%a in ('Dir /B "%%WINDIR%%" ^| Find /V /C ""') do (Set /A Numero=%%a , Numero+=5) & Mode con cols=60 lines=%%Numero%% & pause

El script funciona a medias, Porque se muestra el número de la operación, se muestra la suma correcta, osea que la variable se crea, pero no encuentro modo alguno de usar (Mostrar) la variable "número"...

He probado usando en la variable un %, dos %%, tres y hasta 5 %%%%%, xD.
He probado expandiendo la variable con !, y activando set local enabledelayedexpansion... no se que más probar

PD: Aparte, aunque no lo necesito, pero por curiosidad... ¿Como se usaria un "CALL" en una sola linea? Se puede? lo he probado sin éxito xD.


Título: Re: [BATCH] ¿Como crear una variable de esta manera?...
Publicado por: Eleкtro en 11 Enero 2012, 02:01 am
Bueno lo he conseguido, Aunque no me ha quedado otro remedio que pasar el resultado a un txt...

Ah por si no habia quedado claro, la intención de esto era ajustar el tamaño de la ventana del CMD, basandose en el número de carpetas que tuviera el directorio...

Código:
CMD.exe /C @Echo OFF & For /F %%a in ('Dir /B /S /AD "%%windir%%" ^| Find /V /C ""') do (Set /A Numero=%%a , Numero+=10 >"%%Temp%%\NumeroTemp.Tmp") & For /F %%a in ('Type "%%Temp%%\NumeroTemp.Tmp"') do (If %%a GTR 75 (Mode con cols=120 lines=75) ELSE (Mode con cols=120 lines=%%a)) && pause



EDITO: aqui el code entero xDDD, No hagan este mal ejemplo de batch sin indentación en sus casas xDDDDDD

Código:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Obtener privilegios para esta carpeta]
"NoWorkingDirectory"=""
"position"="bottom"

[HKEY_CLASSES_ROOT\Directory\shell\Obtener privilegios para esta carpeta\command]
@="CMD.exe /C @Echo OFF & Title Obtener privilegios para: %%UserName%% & For /F %%a in ('Dir /B /S /AD \"%1\" ^| Find /V /C \"\"') do (Set /A Numero=%%a , Numero+=10 >\"%%Temp%%\\NumeroTemp.Tmp\") & For /F %%a in ('Type \"%%Temp%%\\NumeroTemp.Tmp\"') do (If %%a GTR 75 (Mode con cols=120 lines=75) ELSE (Mode con cols=120 lines=%%a)) && If Exist \"%%WINDIR%%\\system32\\nircmd.exe\" (nircmd win center ititle \"Obtener Privilegios\") & Color 0F & Cls & Echo+ & Echo. Procesando todos los archivos y subdirectorios de... & Echo. %1 & Ping -n 2 LocalHost >Nul & Echo+ & Dir /B /S /AD \"%1\" && Echo+ & takeown /f \"%1\" /R /D S >nul && Icacls \"%1\" /Grant %%UserName%%:(F) /T | find /i \"Correctamente\" && Echo+ & Echo. Privilegio de \"Acceso total\" (F) concedido al usuario \"%%UserName%%\"   Ok! && Del /Q \"%%Temp%%\\NumeroTemp.Tmp\" & Ping -n 8 LocalHost >Nul && Exit"

(http://img217.imageshack.us/img217/2108/prtscrcapture2f.jpg)

(http://img856.imageshack.us/img856/2828/prtscrcaptured.jpg)

un saludo