none
asociace Otevřít v programu

    Dotaz

  • Potřeboval bych z dávky přidat určitý program do Otevřít v programu ..... u konkrétního typu souboru. Nejlépe najednou pro všechny uživatele na daném stroji.

    Nejde mi o obyčejné asociování přípony s programem, to umím a používám. Děkuji.

    26. května 2010 16:33

Odpovědi

  • Napr.

    set ext=.txt
    set myappbin=myapp.exe
    set myappname=MyApp
    
    for /f "tokens=2 delims==" %i in ('assoc %ext%') do echo set ftype=%i
    reg add HKEY_CLASSES_ROOT\%ftype%\shell\OpenWith%MyAppName%\command /ve /t REG_SZ /d "%MyAppBin% %1"

    MP

    26. května 2010 19:00
    Moderátor
  • takže myslím, že tam je navíc jedno "echo" u řádky s for ... . Funkční příkladový kod  je tedy např. takto:

     

    rem toto je dávkový soubor na doplnkovou asociaci přípony s nějakým programem
    set ext=.srt set myappbin=c:\prg\bat\titulky.bat set myappname=OpravaTitulku for /f "tokens=2 delims==" %%i in ('assoc %ext%') do set ftype=%%i reg add HKEY_CLASSES_ROOT\%ftype%\shell\%MyAppName%\command /ve /t REG_SZ /d "%MyAppBin% \"%%1\""

     

    Díky.

     

    Spravedlivé boží tresty raději nechme stranou.

    • Označen jako odpověď pee kaa 26. května 2010 20:44
    • Upravený pee kaa 27. května 2010 13:24 ještě jedna chybka: pro jména s mezera nutno mít: \"%%1\"
    26. května 2010 20:42

Všechny reakce

  • assoc/ftype nestaci?

    MP

     

    26. května 2010 17:43
    Moderátor
  • Možná to špatně chápu, ale toto (assoc/ftype) asociuje "hlavní" program, tedy klasicky dvojklik. To já již mám. A já chci ještě dva další do Otevřít pomocí ...
    26. května 2010 17:51
  • Aha, uz chapu.

    MP

    26. května 2010 18:31
    Moderátor
  • Napr.

    set ext=.txt
    set myappbin=myapp.exe
    set myappname=MyApp
    
    for /f "tokens=2 delims==" %i in ('assoc %ext%') do echo set ftype=%i
    reg add HKEY_CLASSES_ROOT\%ftype%\shell\OpenWith%MyAppName%\command /ve /t REG_SZ /d "%MyAppBin% %1"

    MP

    26. května 2010 19:00
    Moderátor
  • v tomto se moc nevyznám, rozhodně ale vím, že když to dám do dávky, že to nefunguje. Zkoušel jsem přidávat ještě jedno % k %, takže např.
    for /f "tokens=2 delims==" %i in ('assoc %ext%') do echo set ftype=%i
    je nyní
    for /f "tokens=2 delims==" %%i in ('assoc %%ext%%') do echo set ftype=%%i

    Nejsem si jistý, že je to zcela dobře, ale alespon to nekončí chybou.

    to hlavní je ale asi tady:

    reg add HKEY_CLASSES_ROOT\\shell\OpenWithtitulkybat\command /ve
     /t REG_SZ /d "c:\prg\bat\titulky.bat %1"
    Error:  Zadaná cesta není platná.

     

    Cesta je určitě správně. Díky.

    26. května 2010 19:29
  • Samozrejme v davce museji byt NEKTERA % zdvojena (nastuduj si prosim). Ja to psal z volleye primo do shellu a overil jsem, je to plne funkcni reseni, nechapu proc odznacujes odpoved. Over si step by step a pak prevadej do cmd.

    Ovsem - pokud mas chybu uz ve "for"-u a nenaplni se ti promenna ftype skonci dalsi krok chybou (jak vidis mezi \\ chybi prave expandovana promenna %ftype%. 

    Pokud jsi zacatecnik doporucuji alespon pred akcni radky scriptu pridavat ECHO at vidis prubeh / evaluaci promennych ale nenadelas zbytecne skody.

    Cestou se samozrejme mini CESTA (KLIC) K HODNOTE V REGISTRU, programu reg.exe je uplne fuk zda nejaky titulky.bat existuje nebo ano. Je to spravedlivy bozi trest za to ze pouzivas lokalizovany OS.

    Pro 32 bitove systemy ovsem neni vubec vhodne pouzivat pro shellove scripty priponu .bat, zde je nativnim shellem cmd.exe a pripona .cmd

     MP

     

    26. května 2010 19:42
    Moderátor
  • takže myslím, že tam je navíc jedno "echo" u řádky s for ... . Funkční příkladový kod  je tedy např. takto:

     

    rem toto je dávkový soubor na doplnkovou asociaci přípony s nějakým programem
    set ext=.srt set myappbin=c:\prg\bat\titulky.bat set myappname=OpravaTitulku for /f "tokens=2 delims==" %%i in ('assoc %ext%') do set ftype=%%i reg add HKEY_CLASSES_ROOT\%ftype%\shell\%MyAppName%\command /ve /t REG_SZ /d "%MyAppBin% \"%%1\""

     

    Díky.

     

    Spravedlivé boží tresty raději nechme stranou.

    • Označen jako odpověď pee kaa 26. května 2010 20:44
    • Upravený pee kaa 27. května 2010 13:24 ještě jedna chybka: pro jména s mezera nutno mít: \"%%1\"
    26. května 2010 20:42
  • takze sis opravil sve chyby ktere jsi pridal do meho funkcniho kodu a oznacil za odpoved ... LOL

    MP

     

    26. května 2010 20:47
    Moderátor
  • takze sis opravil sve chyby ktere jsi pridal do meho funkcniho kodu a oznacil za odpoved ... LOL

    MP

     


    ne. opakuji: takže myslím, že tam je navíc jedno "echo" u řádky s for- a to myslím u tvého kod, což způsobuje, že kod nefungoval. A to že nefungoval v dávce, na kterou jsem se ptal, to je již další jiná věc. Jen jsem chtěl, aby případný další zájemce měl řešení víceméně hotové, bez nutnosti dodělávek. Abych já, až zase za rok budu toto řešení hledat, abych jen "vzal a použil". 

    Tady se sbírají body za to, kolikrát máš správnou odpověd? Tak moc na tom záleží?  :-(

    DĚKUJI.

    27. května 2010 3:10
  • Ano, mas pravdu, opravdu mi tam zbylo echo z ladeni - oznacim v prispevku.

    Co se tyce bodu - za kazdy bod mam 4,50 Kc takze dnes si dam k obedu rohlik a mliko (samozrejme kecam). Nicmene zijeme ve svete kde se kvantifikuje at se nam to libi nebo ne.

    MP

    27. května 2010 6:03
    Moderátor