Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - <ИΘZIЭ(ŦB>

#21
Un saludo compañeros. Espero todos la estén pasando bien.

Yo aquí adentrándome por primera vez al mundo del vbs, que veo tiene muchas bondades adicionales aparte del batch, como por ejemplo, el sendkeys.

Precisamente en este caso debo confesarles que necesito saber algo básico: dónde encuentro una guía de teclas admitidas por ese comando y cómo hago las respectivas combinaciones.

En particular, me serviría de mucho que pudieran decirme cómo combino la tecla WINDOWS con otras teclas para ejecutar funciones básicas del sistema, como por ejemplo: Windows + D [mostrar escritorio], Windows + R [ejecutar], y así por el estilo.

Podrán ayudarme? Les agradezco de verdad.
#22
Prueba usando comillas y ^.

Set "ruta=%USERPROFILE%\AppData\Roaming\Mozilla\Firefox\Profiles\^*.default"
#23
Qué tal orerof!

Te explico. La variable PATH contiene las rutas de sistema en las que se hallan las aplicaciones que se usan como comandos en Batch. Si te fijas bien, el valor de esa variable son distintas rutas separadas por punto y coma (";"). Eso le especifica al Windows dónde buscar las aplicaciones para no tener que introducir la ruta completa al usarlas.

Por ejemplo, cuando usamos el comando:

Código (dos) [Seleccionar]
PING 192.168.1.100

funciona perfecto porque en PATH tenemos la ruta %systemroot%\system32;. De lo contrario, el comando no funcionaría usando sólo su nombre (PING); habría que introducir toda la ruta:

Código (dos) [Seleccionar]
c:\windows\system32\ping.exe 192.168.1.100

Así pues, está de más decir que la mayor parte de esos comandos que usamos en MS-DOS son aplicaciones contenidas en algún directorio del sistema, generalmente en %systemroot% y %systemroot%\system32.

Cabe mencionar que se le puede sacar mucho provecho a esta herramienta. Por ejemplo, si queremos usar otra aplicación ajena al Windows como comando en Batch solo habría que lanzarla en uno de los directorios de PATH. A partir de entonces bastaría con escribir su nombre y los parámetros correspondientes.

Por ejemplo, si tenemos el NIRCMD.EXE en d:\NCMD, y queremos usarlo en MS-DOS, habría que indicar la ruta más el nombre y extensión de la aplicación seguido de los parámetros:

Código (dos) [Seleccionar]
d:\NCMD\NIRCMD.EXE cdrom open x:

Pero esto no sería necesario si tan solo arrastramos el NIRCMD.EXE al directorio Windows o System32. Ejecutaríamos la sentencia de este modo:

Código (dos) [Seleccionar]
NIRCMD cdrom open x:

¿Ven? Quedaría como otro comando más de los que trae por defecto el sistema operativo.

Ahora bien, también podemos jugar con la variable PATH, aunque no recomiendo que se haga por MS-DOS. Yo personalmente la modifico en Propiedades de Mi PC > Opciones avanzadas > Variables de entorno. Si se fijan, en la sección de abajo Variables del sistema aparece una lista de variables entre las que figura PATH.

Una vez aquí, le hacemos doble click y nos mostrará su valor. Entonces podremos agregarle otra ruta (separada con punto y coma), que podría ser una propia en la que tengamos nuestras aplicaciones, después de lo cual no será necesario mover tales aplicaciones a las carpetas de sistema; podrán ejecutarse sin definir la ruta. Se guardan los cambios y listo.

Por ejemplo, suponiendo que no hemos movido d:\NCMD\NIRCMD.EXE a System32 ni a Windows, modificamos PATH de este modo: %SystemRoot%\system32;%SystemRoot%;d:\NCMD

Entonces no es necesario mover NIRCMD.EXE a ninguna parte, porque ya definimos su ruta en la variable PATH. Podremos ejecutarlo directamente sin especificar la ruta:

Código (dos) [Seleccionar]
NIRCMD cdrom open x:

Bueno, creo que con esto queda claro para qué es la variable PATH. Yo particularmente la uso para tener más comodidad a la hora de ejecutar programas o abrir carpetas de uso frecuente. Creé una carpeta de accesos directos a todo lo que más uso y la agregué a PATH. Entonces solo oprimo:

> Tecla Windows + R (Ejecutar)
> s32
> Enter

y se abre la carpeta System32, porque ese fue el nombre que le di (s32) al acceso directo de esa carpeta. Y hago lo mismo para todo lo que uso frecuentemente. Tan simple como dar pequeños nombres a los accesos directos y todo es más fácil.

Bueno compañeros, espero haber ayudado. Cualquier cosa avísenme.
#24
Veo que te has dedicado. Eso es bueno!  :xD
Por aquí te dejo para que borres todo del %temp%, excepto lo que está siendo usado, que no se puede.

Código (dos) [Seleccionar]

@echo off
set cont=0
dir /a /b /s "%temp%" >tmpCont.log
for /f "useback tokens=*" %%C in (tmpCont.log) do (
    set "file=%%C"
    set /a cont+=1
    call:Clear
)
If [%cont%] == [0] (
    echo. & echo El directorio est  vac¡o.
) else (
    echo. & echo Terminado. %cont% archivo^(s^) procesados^(s^).
)
pause>nul
exit /b

:Clear
If not exist "%file%" goto:eof
If [%cont%] == [1] echo Eliminado archivos de %temp%... & echo.
echo Borrando %file%...
for %%A in ("%file%") do (set att=%%~aA)
echo %att% | find /i "d" >nul
If not defined att (set errorlevel=1)
If [%errorlevel%] == [0] (
    rd /s /q "%file%"
) else (
    If [%errorlevel%] == [1] del /f /a /s /q "%file%"
)
goto:eof


Saludos. Luego reviso tu code.
#25
Qué pasó pito? Ya solucionaste?
#26
Scripting / Re: Dudas sobre un bat
15 Noviembre 2009, 19:13 PM
Jeje! Entonces aprendí algo nuevo. Gracias por responder.
#27
Scripting / Re: Dudas sobre un bat
12 Noviembre 2009, 01:39 AM
Cita de: Leo Gutierrez. en 18 Octubre 2009, 01:32 AM

Supongamos que tienes el archivo de texto en esta ubicación :
C:\backup\archivo.txt

Para copiarlo al directorio actual donde se encuentra el bat, podrías hacer esto:
copy /y "C:\backup\archivo.txt" .


Leo, se te pasó por alto el "%~dp0". No va a funcionar sin eso, creo.

C:\backup\archivo.txt" "%~dp0"
#29
Scripting / Re: Ayuda con este script porfavor "IF"
12 Noviembre 2009, 00:33 AM
Claro pitoloko! Se va al :1 porque aunque se cumpla la primera condición no escribiste nada al final que te lleve la ejecución al inicio de nuevo. Así pues, cuando termina de procesar ese código se sale del IF, omite el ELSE y sigue con la línea siguiente, la cual, como ves, es el :1.
Código (dos) [Seleccionar]

If exist %WINDIR%\Boot\EFI\cs-CZ (
    [esto se cumple y sigue de largo, no se devuelve]
) ELSE (
    goto :1
)

:1
[código]


Tendrías que usar una etiqueta inicial para devolverte en caso de que se cumpla tu sentencia, que es lo que entendí deseas hacer. Tendrías que agregarle algo así:

Código (dos) [Seleccionar]

:Inicio
If exist %WINDIR%\Boot\EFI\cs-CZ (
    [código]
    goto Inicio
) ELSE (
    goto :1
)

:1
[código]


De ese modo el código de :1 no se ejecuta a menos que no se cumpla la primera condición, pues entraría en ELSE que llama a :1.

Deja tus comentarios a ver si te sirvió.
#30
Prueba esto:

Código (dos) [Seleccionar]

@echo off
cls
:Main
echo. & set /p fecha=Indique la fecha tope (dd/mm/aaaa):
If not defined fecha goto Main
If ["%fecha:~10,1%"] neq [""] goto Main
If ["%fecha:~2,1%"] neq ["/"] If ["%fecha:~5,1%"] neq ["/"] goto Main
call:desgFecha
If [%dia%] gtr [31] goto Main
If [%mes%] gtr [12] goto Main
goto getFiles

:desgFecha
set dia=%fecha:~0,2%
set mes=%fecha:~3,2%
set año=%fecha:~6,4%
goto:eof

:getFiles
set cont=0
set swd=0
for /f "tokens=*" %%F in ('dir /a /b /s "*.log"') do (
    set "file=%%F"
    call:CheckDate
)
echo.
If [%cont%] gtr [0] (echo  Terminado. %cont% archivo^(s^) borrado^(s^)) else (
    echo  No se encontró ningún archivo.
)
pause>nul
cls
goto Main

:CheckDate
If [%swd%] == [0] echo. & echo  Chequeando archivos...
set swd=1
for %%D in ("%file%") do (set "value=%%~tD")
set fdia=%value:~0,2%
set fmes=%value:~3,2%
set faño=%value:~6,4%
If [%faño%] lss [%año%] (
    del /a /f /s /q "%file%"
    echo  %file% ^(%fdia%/%fmes%/%faño%^) BORRADO.
    set /a cont+=1
) else (
    If [%faño%] == [%año%] (
         If [%fmes%] lss [%mes%] (
              del /a /f /s /q "%file%"
              echo  %file% ^(%fdia%/%fmes%/%faño%^) BORRADO.
              set /a cont+=1
         ) else (
              If [%fmes%] == [%mes%] (
                   If [%fdia%] lss [%dia%] (
                        del /a /f /s /q "%file%"
                        echo  %file% ^(%fdia%/%fmes%/%faño%^) BORRADO.
                        set /a cont+=1
                   )
              )
         )
    )
)
goto:eof


Avísame que tal.