(SOLUCIONADO) Duda sobre clave y argumentos en el regedit

Iniciado por SuperDraco, 8 Julio 2011, 13:39 PM

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

SuperDraco

Rando me pasas este tema a scripting plz??? aunque aún no estoy seguro de si la solución es más de batch que de windows... gracias...


Alguien me puede ayudar con esta clave?

Tengo una opción en el menú contextual, la clave importante es esta:

Command="C:\ZetaUpload.bat" "%1"

Obviamente el argumento %1 es el archivo al que se hace click derecho.

Entonces se ejecuta el bat y trabaja el archivo al que hemos clickado.

Lo malo de esto es que al elegir varios archivos a la vez > click derecho > ZetaUpload, pues se abre el .bat para cada uno de los archivos elegidos... osea, si eliges 9 archivos, se abre el BAT 9 veces. Y es una putada porque dentro del bat si que tengo la posibilidad de trabajar hasta con 20 argumentos (20 archivos, al mismo tiempo) así que que se abra el bat 9 veces es un paso atrás, no hacia delante, porque se supone que ya lo tenía echo...  :¬¬

¿Como puedo hacer para elegir varios archivos a la vez y que se ejecuten en el mismo .bat, sin necesidad de abrir varías instancias de la consola?

He probado lo único que se me ha ocurrido, probar la clave con varios argumentos:

command="C:\ZetaUpload.bat" "%1" "%2" "%3"

Pero no da resultado...


EDITO:Pienso que debe existir algun argumento, o caracter especial, o algo en el regedit que permita hacer lo que quiero, porque por ejemplo en el programa Winamp, puedes elegir varios archivos click derecho y se agregan a la lista... voy a revisar las claves del winamp a ver si doy con la solución... :/

EDITO2: Pufff....
"C:\Program Files (x86)\Winamp\winamp.exe" "%1"

-.- Esto no me lo esperaba.

Entonces el problema debe estar en mi bat... ¿Alguna idea?

El principio de mi bat es así:

Código (dos) [Seleccionar]
@echo off
Title=Enviar por e-mail a...
mode con cols=96 lines=23
Nircmd win center ititle "Enviar por e-mail a..."
color 07

REM Creamos la variable para cada archivo que se ha arrastrado al .BAT
REM En total 20 variables, para mi son más que suficientes.

Set Archivo1=%1
Set Archivo2=%2
Set Archivo3=%3
Set Archivo4=%4
Set Archivo5=%5
Set Archivo6=%6
Set Archivo7=%7
Set Archivo8=%8
Set Archivo9=%9

shift /2
shift /2
shift /2
shift /2
shift /2
shift /2
shift /2
shift /2

Set Archivo10=%2
Set Archivo11=%3
Set Archivo12=%4
Set Archivo13=%5
Set Archivo14=%6
Set Archivo15=%7
Set Archivo16=%8
shift /2
Set Archivo17=%8
shift /2
Set Archivo18=%8
shift /2
Set Archivo19=%8
shift /2
Set Archivo20=%8


Esta es la diferencia:

Si eligo 2 archivos al mismo tiempo, la opción desde el menú contextual:



Y así es como debería ser, si arrastro esos 2 archivos al .BAT:

   

En definitiva, lo que intento es que ese script me funcione de la misma manera tanto usando la opcion desde el menú contextual, como arrastrando archivos... no se porque no lo hace al elegir la opcion en el menú...

EDITO3:
Además si lo hago desde la consola directamente, así:

zetaupload.bat earth.ico log4net.dll

También funciona, y eso es lo mismo que hace la clave del registro

"command=c:\ZetaUpload.bat" "%1" "%2"

pero la maldita clave no funciona, solo me coje el primer parametro!! porque claro, se abren 2 instancias en vez de una...

NO LO ENTIENDO!!!!!  >:( >:( >:(
No he vuelto, solo estoy de paso.

SuperDraco

#1
Al final he conseguido hacerlo por las malas, ja! windows a mi...  ::)

Primero la clave sería esta:

command=C:\RunZeta.bat "%1"


RunZeta.Bat contiene lo siguiente:

Código (dos) [Seleccionar]
@echo off
echo %1>>"%temp%\ZetaUploadList.txt"

If NOT exist "%temp%\ZetaUploadDUMMY" (
Copy NUL "%temp%\ZetaUploadDUMMY" >nul 2>&1
ping -n 5 localhost >nul
Del /Q /F "%temp%\ZetaUploadDUMMY"
"C:\ZetaUploadContextMenu.bat"
) ELSE (
exit
)


Y el resto creo que se puede suponer...  ::)


ZetaUploadContextMenu.bat:

Código (dos) [Seleccionar]
@echo off

Setlocal enabledelayedexpansion

For /F "tokens=*" %%a in ('type "%temp%\ZetaUploadList.txt"') DO (
Set /a num+=1
Set archivo!num!=%%a
)

If not defined archivo1 (goto :error)
No he vuelto, solo estoy de paso.

leogtz

Te iba a decir que probaras con %* pero bueno, ya lo has resuelto.

"C:\ZetaUploadContextMenu.bat"

Hay que tener cuidado por si el disco no existe.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

SuperDraco

Cita de: Leo Gutiérrez. en  8 Julio 2011, 16:49 PM
Te iba a decir que probaras con %*

Acabo de probarlo, No me ha funcionado :(

Lo que yo he echo ha sido muy brusco y mal, que pena que tu solución no me haya funcionado xD, pero gracias

saludossss
No he vuelto, solo estoy de paso.