Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Jak provést asociace přípon dávkovým souborem?

Jak provést asociace přípon dávkovým souborem?
Např. spustím *.bat a provede se asociace *.pdf do pdfprohlizec.exe. Spustím soubor.pdf a ten se otevře v pdfprohlizec.exe.
Další příklad - spustím *.bat a provede se asociace *.txt do aplikace txtprohlizec.exe. Kliknu na soubor.txt a ten se otevře v txtprohlizec.exe.
Zacíleno na Windows XP až Windows 10.

Předmět Autor Datum
Dělal bych to spíše *reg soubory, ne baťáky. Výsledek bude takový, jaký chceš.
L-Core 14.04.2018 11:23
L-Core
Nejprve příkazem ftype přiřadíš typ souboru konkrétnímu programu (ten "typ souboru" je vlastně tvůj…
Pytlík 14.04.2018 11:37
Pytlík
Mám to takto a není to funkční. Kde dělám chybu? Soubor asociace.reg obsahuje: ftype txtfile="c:\Us…
Asociace 14.04.2018 13:15
Asociace
V zadání chybu nevidím (předpokládám, že ta pomlčka v cestě nahrazuje jméno účtu, s kterým se, pocho…
Pytlík 14.04.2018 13:34
Pytlík
Ano, je to přesně tak, název uživatelského účtu je "-" (pomlčka). V tom problém opravdu není. C:\Us…
Asociace 14.04.2018 13:43
Asociace
Proč to máš jako reg soubor, když jsi chtěl bat?
Wikan 14.04.2018 13:40
Wikan
Protože dbáno rady od L-Core. Prakticky vyzkoušeno, že uvedené lze spustit z *.reg, ale z *.bat je t…
Asociace 14.04.2018 13:44
Asociace
Z reg tohle nikdy fungovat nebude.
Wikan 14.04.2018 14:32
Wikan
Tak to ho jsem si nevšiml. Nenapadlo mě, že existuje takový vůl, který, když chce spustit příkazy Cm…
Pytlík 14.04.2018 15:26
Pytlík
Ale no tak, tyhlle invektivy si nech pro bližní. Jasně jsem psal "Po spuštění souboru asociace.reg .…
Asociace 14.04.2018 15:36
Asociace
Ta poslední věta ale pasuje na tebe. Dotaz zní jak to udělat pomocí bat a pak to zkousíš jako reg.
snco1301 14.04.2018 15:39
snco1301
Řídil jsem se radou od moderátora. Ostatní ji četli také. Nikdo nezmínil že přes *.reg cesta nevede.
Asociace 14.04.2018 15:46
Asociace
ona vede ale soubor reg a bat fungují každý trochu jinak.
snco1301 14.04.2018 16:04
snco1301
Cesta přes .reg vede. Jenomže soubor .reg (asociovaný na regedit.exe) musí obsahovat něco jiného, ne…
Pytlík 14.04.2018 16:59
Pytlík
Není dobré hodnotit někoho koho neznám. Pak se ti nebude stávat, že se ztrapňuješ. Vůbec ti nepříslu…
Asociace 14.04.2018 17:29
Asociace
Zcela jasně jsi napsal: Soubor asociace.reg obsahuje: ftype txtfile="c:\Users\-\Desktop\txtprohlizec…
Pytlík 14.04.2018 18:18
Pytlík
Pán je mistr vytrhávání z kontextu, proto odkazuji na původní příspěvek a znovu se ptám, kde dělám c…
Asociace 14.04.2018 18:47
Asociace
Kde děláš chybu? Mícháš dva příspěvky dohromady. L-Core a Pytlík reagovali na tvůj úvodní příspěvek.…
kacikac 14.04.2018 19:07
kacikac
Ptal jsem se dvakrát na chybu v kódu. A ty tu vysvětluješ časové souslednosti reakcí ve kterých není…
Asociace 14.04.2018 19:19
Asociace
To ti už ale Pytlík vysvětlil, že si nevšimnul, že bys mohl používat cmd příkazy v reg souboru, prot…
kacikac 14.04.2018 19:41
kacikac
Ale no tak ... Zkus být chytřejší než pan inženýr a vysvětli mi / oprav kód, aby fungovala asociace.…
Asociace 14.04.2018 19:48
Asociace
Kód není potřeba opravovat, ale je nutné to spustit s administrátorskými právy.
Wikan 14.04.2018 19:53
Wikan
To jsem zkoušel na Win 10 Pro x64 už před x hodinami. Bez úspěchu.
Asociace 14.04.2018 19:55
Asociace
Já to zkoušel před 5 minutama a funguje.
Wikan 14.04.2018 19:56
Wikan
Znovu jsem to prověřil a opravdu to nefunguje. Spouštím *.bat jako správce/administrátor. Postup:…
Asociace 14.04.2018 20:18
Asociace
Ještě to s tebou zkusím: Zkus rozkliknout .txt odjinud, než z Total Commanderu. On má totiž svoje vn…
Pytlík 14.04.2018 20:51
Pytlík
Tohle jsem už dávno prověřil. Vnitřní asociací Total Commanderu to není.
Asociace 14.04.2018 20:57
Asociace
Spusť cmd jako správce a potom ten .bat soubor. Uvidíš tak případné chyby.
Wikan 14.04.2018 20:55
Wikan
cmd spuštěna jako správce. Po provedení dávky je stav stejný. Stále přetrvává asociace, která se má…
Asociace 14.04.2018 21:08
Asociace
No vždyť tam máš pořád notepad a ne jiný prohlížeč.
Wikan 14.04.2018 21:09
Wikan
Výborně, všímavý člověk. Zde jsem zkusil opačný postup. Výchozí stav - v TC ručně asociováno na txtp…
Asociace 14.04.2018 21:13
Asociace
Netuším, proč to nefunguje zrovna tobě, ale skript jako takový je správně. Mně dělá přesně to, co má…
Wikan 14.04.2018 21:15
Wikan
V pořádku, strčím to k ledu a třeba se ještě někdo ozve. Takové hlavolamy jsou vždycky jen otázkou č…
Asociace 14.04.2018 21:28
Asociace
Ještě na jednu věc jsem si vzpomněl: příkazy jsem ti napsal správně, ale platí pro ruční zadávání z…
Pytlík 14.04.2018 22:53
Pytlík
To, co psal Pytlík, já na asociaci nepoužívám. Předpokládám ale, že pokud ti to psal, tak to fungova…
kacikac 14.04.2018 20:01
kacikac
Taký krakatoa, guru gek, by mal fičať pri desine len a len s "ladičkou" PowerShell, a nie sa paparať…
Nuda 15.04.2018 07:39
Nuda
Máš v tom nejaký guláš. Rozlišuj dávky, skripty *.bat a *.cmd pre W10 ak máš x64 bit systém. Pre je…
Nuda 15.04.2018 07:36
Nuda
Prioritně mi šlo o dávku v *.bat, to zmiňuji v zadání dotazu. Včera jsem testoval/spouštěl jako sprá…
Asociace 15.04.2018 08:45
Asociace
Máš pravdu, že to nefunguje u všech přípon/typů souborů. Některé typy jsou zřejmě už přednastavené z…
2xs 03.12.2022 17:03
2xs
Ještě při použití příkazového řádku jako správce, rozdílnost chování se stejným kódem: C:\Windows\s…
Asociace 15.04.2018 08:55
Asociace
Zábavné čtení. :-D Ještě bych rád autora dotazu upozornil, že je velmi zpozdilé používat profil jaké…
touchwood 05.12.2022 05:54
touchwood
tipuju prave, ze z batky to bude ve w10 profil hkcu, kdezto ms si drzi asociaci na hkcr. je to jedno…
brum brum 05.12.2022 07:30
brum brum
Ja si zas myslim, ze to po 4 letech uz vyresil...:-P
MaSo 05.12.2022 09:53
MaSo
On to sice původně vytáhl 2xs 3.12., ale je zbytečné to po letech dál rozvíjet. poslední
Karel04 05.12.2022 12:02
Karel04

Nejprve příkazem ftype přiřadíš typ souboru konkrétnímu programu (ten "typ souboru" je vlastně tvůj název) a potom příkazem assoc přiřazuješ tomu typu jednotlivé koncovky.
Pro ilustraci předvedu přiřazení souborů .txt programu D:\Util\PSPad\PSPad.exe:

ftype txtfile="D:\Util\PSPad\PSPad.exe" "%1"
assoc .txt=txtfile

Samozřejmě, že řetězec txtfile jsem dosadil zcela ze své libovůle, může tam být libovolný jiný, třeba "blbec"...
a ještě: Když chceš následně přiřadit ten txtfile i pro jinou koncovku, stačí opakovat příkaz assoc, bez ftype. A naopak: Jedním příkazem ftype lze změnit přiřazení programu všem již vytvořeným asociacím k tomu typu (kdo by to ale u PSPadu dělal, že)

Mám to takto a není to funkční. Kde dělám chybu?

Soubor asociace.reg obsahuje:
ftype txtfile="c:\Users\-\Desktop\txtprohlizec.exe" "%1"
assoc .txt=txtfile

Po spuštění souboru asociace.reg a snaze o zápis do registrů se zobrazí okno s chybovou hláškou:
Editor registru
c:\Users\-\Desktop\asociace.reg nelze importovat: Zadaný soubor není skript registru.
Z editoru registru lze importovat pouze binární soubory registru.

V zadání chybu nevidím (předpokládám, že ta pomlčka v cestě nahrazuje jméno účtu, s kterým se, pochopitelně, nehodláš chlubit), takže jedine snad je chyba v přístupových právech.
Co ti to napíše, když napíšeš ftype txtfile ? (pozor, bez rovnítka, tím by sis to vymazal). Stejně tak assoc .txt

Ano, je to přesně tak, název uživatelského účtu je "-" (pomlčka). V tom problém opravdu není.

C:\Users\->ftype txtfile
txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1

Mimochodem, zkusil jsem natvrdo změnit asociaci *.txt k txtprohlizec.exe v Total Commander a pak se stejně vypisuje stejné sdělení v příkazovém řádku. Přitom se už nově *.txt po rozkliknutí otevře v txtprohlizec.exe

Po změně asociace se stejně vypíše:
C:\Users\->ftype txtfile
txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1

Cesta přes .reg vede. Jenomže soubor .reg (asociovaný na regedit.exe) musí obsahovat něco jiného, než příkazy pro .bat. Moderátor to považoval za samozřejmé a netušil na jaký programátorský skvost narazil a já jsem nekontroloval příponu souboru, který jsi použil a soustředil se na vlastní příkazy. Možná moje chyba, ale je to tvoje blbost. S takovou úrovní znalostí bys neměl zasahovat do počítače a jenom klikat na ikony...

Není dobré hodnotit někoho koho neznám. Pak se ti nebude stávat, že se ztrapňuješ. Vůbec ti nepřísluší se vyjadřovat takto ke mě ani ke komukoli jinému. Nikdo není zvědavý na invektivní vyjadřování a povrchní řeči, které prakticky nic neřeší. Lidé sem přicházejí pro radu, pro řešení. Pokud jsi tak chytrý, proč jsi mi nevysvětlil a nenapsal jak to udělat?
Prošlo tu X lidí a ani jeden nebyl schopný věcně poradit řešení. Jen povrchní tipy od kterých se nešlo odrazit.
Mohli jste mi pomoci a ušetřili byste mi x hodin času. Nakonec jsem si to nastudoval a napsal sám.

Vyřešeno oběma způsoby. Snad to někomu do budoucna pomůže, když místní znalci nevědí.

*.bat
reg.exe add "hkcr\txtfile\shell\open\command" /ve /t reg_sz /d "c:\users\-\desktop\txtprohlizec.exe \"%%1\"" /f
exit

*.reg
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\txtfile\shell\open\command]
@="C:\\Users\\-\\Desktop\\txtprohlizec.exe \"%1\""

Pán je mistr vytrhávání z kontextu, proto odkazuji na původní příspěvek a znovu se ptám, kde dělám chybu?

Asociace [139.162.173.xxx], 14.04.2018 13:15
#3

Mám to takto a není to funkční. Kde dělám chybu?

Soubor asociace.reg obsahuje:
ftype txtfile="c:\Users\-\Desktop\txtprohlizec.exe" "%1"
assoc .txt=txtfile

Po spuštění souboru asociace.reg a snaze o zápis do registrů se zobrazí okno s chybovou hláškou:
Editor registru
c:\Users\-\Desktop\asociace.reg nelze importovat: Zadaný soubor není skript registru.
Z editoru registru lze importovat pouze binární soubory registru.

Ano, výsledný kód musí fungovat v *.bat.

Kde děláš chybu? Mícháš dva příspěvky dohromady.
L-Core a Pytlík reagovali na tvůj úvodní příspěvek. Pytlík nereagoval na příspěvek od L-Core a nemá s tím příspěvkem nic společného. Pytlík tedy odpovídal tak, jak je to napsané v úvodním příspěvku a řešil to pomocí dávkového souboru.

To ti už ale Pytlík vysvětlil, že si nevšimnul, že bys mohl používat cmd příkazy v reg souboru, protože ho nenapadlo, že bys mohl být tak totálně vypatlaný idiot, když chceš navíc řešit dávkový soubor a najednou jej cpeš do reg souboru. A evidentně jsi.
Takže si dáme nové kolečko a chceš to znovu všechno zopakovat už poněkolikáté? Zvláštní, že to všem je jasné jen tobě ne :-D

Znovu jsem to prověřil a opravdu to nefunguje. Spouštím *.bat jako správce/administrátor.

Postup:

1) V Total Commanderu ručně změněna a zkontrolována asociace *.txt na notepad.exe
Po rozkliknutí *.txt se soubor otevře v notepad.exe.

2) Následně spuštěn jako správce *.bat s uvedeným kódem.
ftype txtfile="c:\Users\-\Desktop\txtprohlizec.exe" "%1"
assoc .txt=txtfile

3) Po rozkliknutí *.txt se soubor otevře v notepad.exe místo požadovaného txtprohlizec.exe.

cmd spuštěna jako správce. Po provedení dávky je stav stejný. Stále přetrvává asociace, která se má změnit.

C:\Windows\system32>cd ..

C:\Windows>cd ..

C:\>cd c:\Users\-\Desktop\

c:\Users\-\Desktop>asociuj.bat

c:\Users\-\Desktop>ftype txtfile="c:\Windows\notepad.exe" ""
txtfile="c:\Windows\notepad.exe" ""

c:\Users\-\Desktop>assoc .txt=txtfile
.txt=txtfile

c:\Users\-\Desktop>

Ještě na jednu věc jsem si vzpomněl: příkazy jsem ti napsal správně, ale platí pro ruční zadávání z konzolového okna. Týká se to příkazu ftype. Když ho používáš v dávkovém souboru (tedy .bat, nebo .cmd - oba jsou totéž), tak musíš zdvojit znak %, aby interpreter (tj. Cmd.exe) poznal, že má dosadit znak procento a ne první parametr spouštěné dávky (který je prázdný) - viz následující řádky:
Pro ruční zadání: ftype txtfile="c:\Users\-\Desktop\txtprohlizec.exe" "%1"
Dávkový soubor: ftype txtfile="c:\Users\-\Desktop\txtprohlizec.exe" "%%1"

To, co psal Pytlík, já na asociaci nepoužívám. Předpokládám ale, že pokud ti to psal, tak to fungovat bude, pokud je nějaký problém s jeho skriptem, tak se obrať na něj. První možný problém ti tu už byl sdělen, že to je cmd a ne reg a druhý ti tu teď napsal Wikan.
A co se týče mě, tak ti tu klidně můžu napsat jak asociuju já, já asociuju podobně jako ten tvůj uvedený bat s reg.exe, akorát že to dělám přes Classes v HKLM a nastavuju tam třeba i ikonku (např. videosoubory mají v ikonce z mpciconlib.dll v programu MPC-HC i uvedenu příponu souboru (např. mkv má v ikonce mkv)) a jednak to dělám v instalačce i přes OEMDefaultAssociations.xml

Máš v tom nejaký guláš. Rozlišuj dávky, skripty *.bat a *.cmd pre W10 ak máš x64 bit systém.

Pre jednorazovú zmenu asociácie pomocou spusteného okna cmd.exe pre PDF
(ako si zrejme v dopyte žiadal):

ASSOC .PDF=Acrobat.exe
FTYPE Acrobat.exe="C:\Program Files (x86)\Adobe\Acrobat 11.0\Acrobat\Acrobat.exe" "%%1"

Pre uložený skript *.cmd v Notepad.exe začína hlavičkou:
@echo off
--------------------------------

Pre inštalačné *.reg súbory k trvalej zmene asociácie spracované v Notepad.exe vypadá vzor takto:

https://gist.github.com/credomane/9ac7be58f562eb9ba227

Hotové predvoľby asociácií *.reg inštalačných súborov k trvalej zmene:

http://www.winhelponline.com/blog/file-association-fixes-windows-10/

Prioritně mi šlo o dávku v *.bat, to zmiňuji v zadání dotazu.
Včera jsem testoval/spouštěl jako správce/admin v *.bat níže uvedený kód, ale nebyl jsem úspěšný.
Problém je jinde. Nikdo však neví kde. Od té nesmyslné včerejší přestřelky jsem začal tušit, že všichni nevíme nějakou základní informaci, která je nutná pro rozběhutí dávky. Možná to někdo ví, asi tuším kdo, ale úplnou náhodou to sem nenapsal. Taky se pozastavuju nad tím, že by pokud dva dělají totéž na stejné platformě, tak je výsledek rozdílný. Vím, že radili chlapi zkušení a letití, proto mi hlava nebere proč se nedostavil úspěch.

Můžete mi sem napsat vaši verzi OS/bit?
Testováno na x64 Microsoft Windows [Version 10.0.10586]

-------------------------------------

@echo off
cd %systemroot%\system32
call :admin

reg.exe add "hkcr\txtfile\shell\open\command" /ve /t reg_sz /d "c:\windows\notepad.exe \"%%1\"" /f
exit

:admin
reg.exe query "hku\s-1-5-19\environment"
if not %errorlevel% equ 0 (
cls & echo Jsou nutna admin prava ...
pause & exit
)
cls
goto:eof

Máš pravdu, že to nefunguje u všech přípon/typů souborů. Některé typy jsou zřejmě už přednastavené z dřívějška, v držení nějaké jiné aplikace. Windows to mají rozeseto na X nesmyslných místech, není to na jednom místě, kde by to šlo jednoznačně změnit a fungovalo vše. například mi po aplikaci stejné dávky s assoc a s ftype (asociováno do stejného prohlížeče obrázků) u png fungovalo, ale u bmp už ne, u jp2 také ne, u ppm také ne... bylo nutno to ručně a jednotlivě donastavit po vyskočení okna "kterou aplikací to mám otevřít"... se zaškrtnutím "nafurt".
Ale mistři světa výše to zřejmě ani netuší, a tak si myslí, že je člověk blbec.
A na prvotní problém, že aplikace XYZ není v nabídce Nastavení W10 "Výchozí aplikace/Nastavit výchozí možnosti podle aplikace", jelikož se tam aplikace nevyskytuje, a jak ji tam lze doplnit, na to nereagoval nikdo.

Ještě při použití příkazového řádku jako správce, rozdílnost chování se stejným kódem:

C:\Windows\system32>c:\Users\-\Desktop\asociuj.bat

C:\Windows\system32>ftype txtfile="c:\Windows\notepad.exe" "%1"
txtfile="c:\Windows\notepad.exe" "%1"

C:\Windows\system32>assoc .txt=txtfile
.txt=txtfile

C:\Windows\system32>ftype txtfile="c:\Windows\notepad.exe" "%%1"
txtfile="c:\Windows\notepad.exe" "%%1"

C:\Windows\system32>assoc .txt=txtfile
.txt=txtfile

C:\Windows\system32>

Zábavné čtení. :-D
Ještě bych rád autora dotazu upozornil, že je velmi zpozdilé používat profil jakéhokoli uživatele k ukládání aplikací, které se mají asociovat.
Dále je vhodné se kouknout do registrů, zda ta změna proběhla, a zda proběhla na úrovni systému (HKLM) nebo uživatele (HKCU), výsledek spojení těchto dvou registrů je vidět v HKCR. Od dob userprofile2.0 to totiž je rozděleno.

Zpět do poradny Odpovědět na původní otázku Nahoru