abrir un JPG desde HTML con un programa

Iniciado por cixert, 12 Marzo 2010, 00:22 AM

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

cixert

Hola estoy haciendo un cd interactivo en HTML y quiero abrir un jpg con un programa que viene dentro del cd (si no la foto se abre en el navegador)
Lo he intentado con BAT el problema es que hay que especificar la unidad del cd, si se ejecuta desde el navegador (no ocurre asi desde el directorio).
¿hay alguna manera de averiguar cual es la unidad de cd del usuario?
Por otro lado..¿es posible insertar comandos genericos como en html?
Por ejem:
../../
(lo digo para que siga funcionando si el cd se copia a un directorio del disco duro)
Muchas gracias por las respuestas.

@ \Program\Irfanvie\i_view32.exe \fotos\Estudios Acme - Alex.jpg

Este bat lo ejecuto desde el directorio y funciona.
Pero al ejecutarlo desde el navegador me toma por defecto la unidad c:\documents and settings en cmd.exe

cixert

AUTORESPUESTA:

Le decimos en todas y en cada una de las unidades excepto A: que si existe una ruta o un archivo ejecute la accion y si no nada.


@echo off
if exist d:\zysd\ket2010.jpg (d:\Program\Irfanvie\i_view32.exe d:\fotos\Estudios Acme - Alex.jpg) else if exist e:\zysd\ket2010.jpg (e:\Program\Irfanvie\i_view32.exe e:\fotos\Estudios Acme - Alex.jpg)
if exist f:\zysd\ket2010.jpg (f:\Program\Irfanvie\i_view32.exe f:\fotos\Estudios Acme - Alex.jpg) else if exist g:\zysd\ket2010.jpg (g:\Program\Irfanvie\i_view32.exe g:\fotos\Estudios Acme - Alex.jpg)
if exist h:\zysd\ket2010.jpg (h:\Program\Irfanvie\i_view32.exe h:\fotos\Estudios Acme - Alex.jpg) else if exist i:\zysd\ket2010.jpg (i:\Program\Irfanvie\i_view32.exe i:\fotos\Estudios Acme - Alex.jpg)
if exist j:\zysd\ket2010.jpg (j:\Program\Irfanvie\i_view32.exe j:\fotos\Estudios Acme - Alex.jpg) else if exist k:\zysd\ket2010.jpg (k:\Program\Irfanvie\i_view32.exe k:\fotos\Estudios Acme - Alex.jpg)
if exist l:\zysd\ket2010.jpg (l:\Program\Irfanvie\i_view32.exe l:\fotos\Estudios Acme - Alex.jpg) else if exist m:\zysd\ket2010.jpg (m:\Program\Irfanvie\i_view32.exe m:\fotos\Estudios Acme - Alex.jpg)
if exist n:\zysd\ket2010.jpg (n:\Program\Irfanvie\i_view32.exe n:\fotos\Estudios Acme - Alex.jpg) else if exist o:\zysd\ket2010.jpg (o:\Program\Irfanvie\i_view32.exe o:\fotos\Estudios Acme - Alex.jpg)
if exist p:\zysd\ket2010.jpg (p:\Program\Irfanvie\i_view32.exe p:\fotos\Estudios Acme - Alex.jpg) else if exist q:\zysd\ket2010.jpg (q:\Program\Irfanvie\i_view32.exe q:\fotos\Estudios Acme - Alex.jpg)
if exist r:\zysd\ket2010.jpg (r:\Program\Irfanvie\i_view32.exe r:\fotos\Estudios Acme - Alex.jpg) else if exist s:\zysd\ket2010.jpg (s:\Program\Irfanvie\i_view32.exe s:\fotos\Estudios Acme - Alex.jpg)
if exist t:\zysd\ket2010.jpg (t:\Program\Irfanvie\i_view32.exe t:\fotos\Estudios Acme - Alex.jpg) else if exist u:\zysd\ket2010.jpg (u:\Program\Irfanvie\i_view32.exe u:\fotos\Estudios Acme - Alex.jpg)
if exist v:\zysd\ket2010.jpg (v:\Program\Irfanvie\i_view32.exe v:\fotos\Estudios Acme - Alex.jpg) else if exist w:\zysd\ket2010.jpg (w:\Program\Irfanvie\i_view32.exe w:\fotos\Estudios Acme - Alex.jpg)
if exist x:\zysd\ket2010.jpg (x:\Program\Irfanvie\i_view32.exe x:\fotos\Estudios Acme - Alex.jpg) else if exist y:\zysd\ket2010.jpg (y:\Program\Irfanvie\i_view32.exe y:\fotos\Estudios Acme - Alex.jpg)
if exist z:\zysd\ket2010.jpg (z:\Program\Irfanvie\i_view32.exe z:\fotos\Estudios Acme - Alex.jpg) else if exist b:\zysd\ket2010.jpg (b:\Program\Irfanvie\i_view32.exe b:\fotos\Estudios Acme - Alex.jpg)
if exist c:\zysd\ket2010.jpg (c:\Program\Irfanvie\i_view32.exe c:\fotos\Estudios Acme - Alex.jpg) else if exist ñ:\zysd\ket2010.jpg (ñ:\Program\Irfanvie\i_view32.exe ñ:\fotos\Estudios Acme - Alex.jpg)



es decir:

if exist d:\TAL PROGRAMA (d:\VISOR.exe FOTO.jpg) else if exist e:\TAL PROGRAMA (e:\VISOR.exe FOTO.jpg)

Traducido:

Si existe en D:\ un PROGRAMA que esta en nuestro CD ejecuta D:\VISOR.exe con FOTO.jpg sino si existe en E:\ un PROGRAMA que esta en nuestro CD ejecuta E:\VISOR.exe con FOTO.jpg

y asi sucesicamente hasta completar todas las letras de unidad.

Si a alguien si le ocurre la forma de abreviarlo que lo diga.

cixert

#2
¡Me encanta la participacion en este post! jejeje

En fin, se me ocurrieron varias maneras pero la mas abreviada esta:

@echo off
set letra=c (letra por la que quieres comenzar la busqueda)
:ruta
if exist %letra%:\RUTA\ARCHIVO.JPG (%letra%:\RUTA\PROGRAMA.EXE %letra%:\RUTA\ARCHIVO.JPG)
if exist %letra%:\RUTA\ARCHIVO.JPG exit
goto %letra%
:a
set letra=b
goto ruta
:b
set letra=c
goto ruta
:c
set letra=d
goto ruta
:d
set letra=e
goto ruta
:e
set letra=f
goto ruta
:f
set letra=g
goto ruta
:g
set letra=h
goto ruta
:h
set letra=i
goto ruta
:i
set letra=j
goto ruta
:j
set letra=k
goto ruta
:k
set letra=l
goto ruta
:l
set letra=m
goto ruta
:m
set letra=n
goto ruta
:n
set letra=o
goto ruta
:o
set letra=p
goto ruta
:p
set letra=q
goto ruta
:q
set letra=r
goto ruta
:r
set letra=s
goto ruta
:s
set letra=t
goto ruta
:t
set letra=u
goto ruta
:u
set letra=v
goto ruta
:v
set letra=w
goto ruta
:w
set letra=x
goto ruta
:x
set letra=y
goto ruta
:y
set letra=z
goto ruta
:z
echo Ruta no encontrada!

(donde sale un careto debe de poner dos puntos + letra o)

FranciskoAsdf

#3
Podrías ahorrarte MUCHAS lineas de código utilizando un FOR:


Código (dos) [Seleccionar]
For %%A in ( C: D: E: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W: X: Y: Z: ) Do (
If Exist %%A\zysd\ket2010.jpg (%%A\Program\Irfanvie\i_view32.exe %%A\fotos\Estudios Acme - Alex.jpg)
)


Y así recorres TODAS las rutas posibles con solo un par de lineas ^^!

Obviamente no utilizaremos ni la unidad A: ni B: porque están reservadas por Windows para unidades de disquete, y si escribes donde no hay nada obtendrás error durante la ejecución del programa.-




Saludos :)!
Asdf debería ser algún tipo de función.

cixert


---saster---

para saber las letras que estan disponible en el disco puedes usar el wmic o el vol

te dejo para que lo mires con el wmic ;D

for /f "tokens=* skip=1" %%^^ in ('wmic logicaldisk get caption') do (echo %%^^)

completamente de acuerdo con lo del for

LauBuru

#6
No seria mejor combinar wmic con vol para saber aparte de que unidades estan disponibles que unidades estan operativas

Código (dos) [Seleccionar]
@echo off
for /f "tokens=* skip=1" %%a in ('wmic logicaldisk get caption') do (call :uno %%a) &

pause >NUL
pause
:uno
vol %1 | find "volumen" >nul: 2>&1 && echo Unidad %1 disponible y activa
goto :eof


jejejeje es por darle una vuelta mas a la cosa ^^
69696969 start notepad.exe ::

---saster---

#7
si utilizas el vol puedes hacer un for con todas las letras e ir pasandoselas, no haría falta usar el wmic :¬¬

for %%a in (A,B,C,D,E) do (vol %%a | find "volumen" >nul && echo %%a)

saludos