Batch Script │ Varsayılan programlar nasıl ayarlanır?

Taşınabilir (portable) veya bazı uygulamaların kurulumunda program işlem yapabildiği uzantılar üzerinde varsayılan olarak ayarlama işlemi yapmamaktadır. Özellikle taşınabilir programlarda bu tarz bir işleme henüz denk gelmedim. Windows Ayarlar ekranında birden fazla uzantıyı program ile ilişkilendirmek istediğinizde uğraştırıcı bir olabiliyor. Bu konu içerisinde batch script ile belirli parametreleri değiştirerek regedit üzerinden bu işlemi nasıl yapabileceğinizi aktarmaya çalışacağım.

 UYARILAR 

• "Type" değişkeni içerisine istediğiniz kadar uzantı yazabilirsiniz. Tek yapmanız gereken yazdığınız her uzantıdan sonra boşluk bırakmanız.
• "Key" değişkenine program adıyla tanımlama yapmaya dikkat edin. Türkçe harf ve boşluk kullanmayın.
• "Path" ve "Icon" değişkenlerinde " çift tırnak sembolünü kullanmayın.

► Simge ataması yapmadan işlem yapma;

Bu yöntemde program yolunu tanımlarken verdiğiniz .exe dosyasında hangi simge var ise onu kullanacaktır. Aşağıdaki kodu .bat veya .cmd uzantılı dosya içerisine yapıştırıp düzenleyip uygulayabilirsiniz.

echo off
chcp 65001
setlocal enabledelayedexpansion
cls
:: ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:: !Path!= Uygulama .exe'sinin yüklü olduğu dosya yolu
::  !Key!= Program adı
:: !Type!= Uzantıları içeren değişken
set Path=C:\Program Files\7-Zip\7zFM.exe
set Key=7-Zip
set Type=001 7z apfs arj bz2 bzip2 cpio deb dmg esd fat gz gzip hfs lha lzh lzma ntfs rar rpm squashfs swm tar taz tbz tbz2 tgz tpz txz wim xar xz z zip
Call :Default_App
:: Daha fazla program eklemek istiyorsanız. Bu alana yukarıda yer alan;
:: Path, Key, Type değişkenlerini kopyalayıp içeriğini düzenleyin.
:: Bu komutların sonuna Call:Default_App eklemeyi unutmayın
:: -------------------------------------------------------------
:: Tanımlamadan sonra simge sorunu oluşmaması için simge önbelleğini temizliyoruz.
:: Temizleme işleminde Dosya gezgini (explorer) kapatılıp yeniden açılır.
taskkill /f /im explorer.exe > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\IconCache.db" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\*" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\IconCacheToDelete\*" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\NotifyIcon\*" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\thumbcache_*.db" > NUL 2>&1
Call :Powershell "Start-Process '%Windir%\explorer.exe'"
:: -------------------------------------------------------------
echo İşlem tamamlandı...
timeout /t 3 /nobreak > NUL
exit
:: ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:Default_App
:: Silinmesi gereken regedit kayıtlarını .reg dosyasına ekler ve işlem yaptırır.
:: reg delete komutları bazı bölümlerde işlevsiz kaldığı için böyle bir yöntem takip ettim.
echo Windows Registry Editor Version 5.00 > C:\TypeApp.reg
echo. >> C:\TypeApp.reg
FOR %%g in (!Type!) do (
    echo [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%%g] >> C:\TypeApp.reg
    echo [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\!Key!.%%g] >> C:\TypeApp.reg
    echo [-HKEY_CLASSES_ROOT\.%%g] >> C:\TypeApp.reg 
    echo [-HKEY_CLASSES_ROOT\!Key!.%%g] >> C:\TypeApp.reg
    echo [-HKEY_CURRENT_USER\Software\Classes\.%%g] >> C:\TypeApp.reg 
    echo [-HKEY_CURRENT_USER\Software\Classes\!Key!.%%g] >> C:\TypeApp.reg
    echo [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\.%%g] >> C:\TypeApp.reg 
    echo [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\!Key!.%%g] >> C:\TypeApp.reg
)
regedit /s "C:\TypeApp.reg" > NUL 2>&1
:: Oluşturulan .reg dosyası işlemden sonra silinir
DEL /F /Q /A "C:\TypeApp.reg" > NUL 2>&1
:: Program varsayılan olarak ayarlanır.
FOR %%g in (!Type!) do (
    reg add "HKCR\.%%g" /ve /t REG_SZ /d "!Key!.%%g" /f > NUL 2>&1
    reg add "HKCR\!Key!.%%g\shell\open\command" /ve /t REG_SZ /d "\"!Path!\" \"%%1\"" /f > NUL 2>&1
)
goto :eof

► Özel simge atayıp işlem yapma;

Bu yöntemde özel simge tanımlayabilirsiniz. Ben 7-Zip simgesini sevmediğim için bu yöntemi kullanıyorum. Aşağıdaki kodu .bat veya .cmd uzantılı dosya içerisine yapıştırıp düzenleyip uygulayabilirsiniz. 

echo off
chcp 65001
setlocal enabledelayedexpansion
cls
:: ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:: !Path!= Uygulama .exe'sinin yüklü olduğu dosya yolu
::  !Key!= Program adı
:: !Icon!= Uygulama simgesinin bulunduğu dosya yolu
:: !Type!= Uzantıları içeren değişken
set Path=C:\Program Files\7-Zip\7zFM.exe
set Key=7-Zip
set Icon=C:\Program Files\7-Zip\7-zipp.ico
set Type=001 7z apfs arj bz2 bzip2 cpio deb dmg esd fat gz gzip hfs lha lzh lzma ntfs rar rpm squashfs swm tar taz tbz tbz2 tgz tpz txz wim xar xz z zip
Call :Default_App
:: Daha fazla program eklemek istiyorsanız. Bu alana yukarıda yer alan;
:: Path, Key, Type değişkenlerini kopyalayıp içeriğini düzenleyin.
:: Bu komutların sonuna Call:Default_App eklemeyi unutmayın
:: -------------------------------------------------------------
:: Tanımlamadan sonra simge sorunu oluşmaması için simge önbelleğini temizliyoruz.
:: Temizleme işleminde Dosya gezgini (explorer) kapatılıp yeniden açılır.
taskkill /f /im explorer.exe > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\IconCache.db" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\*" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\IconCacheToDelete\*" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\NotifyIcon\*" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\thumbcache_*.db" > NUL 2>&1
Call :Powershell "Start-Process '%Windir%\explorer.exe'"
:: -------------------------------------------------------------
echo İşlem tamamlandı...
timeout /t 3 /nobreak > NUL
exit
:: ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:Default_App
:: Silinmesi gereken regedit kayıtlarını .reg dosyasına ekler ve işlem yaptırır.
:: reg delete komutları bazı bölümlerde işlevsiz kaldığı için böyle bir yöntem takip ettim.
echo Windows Registry Editor Version 5.00 > C:\TypeApp.reg
echo. >> C:\TypeApp.reg
FOR %%g in (!Type!) do (
    echo [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%%g] >> C:\TypeApp.reg
    echo [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\!Key!.%%g] >> C:\TypeApp.reg
    echo [-HKEY_CLASSES_ROOT\.%%g] >> C:\TypeApp.reg 
    echo [-HKEY_CLASSES_ROOT\!Key!.%%g] >> C:\TypeApp.reg
    echo [-HKEY_CURRENT_USER\Software\Classes\.%%g] >> C:\TypeApp.reg 
    echo [-HKEY_CURRENT_USER\Software\Classes\!Key!.%%g] >> C:\TypeApp.reg
    echo [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\.%%g] >> C:\TypeApp.reg 
    echo [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\!Key!.%%g] >> C:\TypeApp.reg
)
regedit /s "C:\TypeApp.reg" > NUL 2>&1
:: Oluşturulan .reg dosyası işlemden sonra silinir
DEL /F /Q /A "C:\TypeApp.reg" > NUL 2>&1
:: Program varsayılan olarak ayarlanır.
FOR %%g in (!Type!) do (
    reg add "HKCR\.%%g" /ve /t REG_SZ /d "!Key!.%%g" /f > NUL 2>&1
    reg add "HKCR\!Key!.%%g\TypeIcon" /ve /t REG_SZ /d "!Icon!" /f > NUL 2>&1
    reg add "HKCR\!Key!.%%g\shell\open\command" /ve /t REG_SZ /d "\"!Path!\" \"%%1\"" /f > NUL 2>&1
)
goto :eof
Blogger tarafından desteklenmektedir.