Skip to content

Instantly share code, notes, and snippets.

@jarfil
Last active August 28, 2021 09:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jarfil/ab683c19fafa75449500 to your computer and use it in GitHub Desktop.
Save jarfil/ab683c19fafa75449500 to your computer and use it in GitHub Desktop.
Clean up Start Menu entries in Windows, Cygwin
#!/bin/bash
# generic processing (DEPRECTED)
#rm -f "*/Uninstall.lnk"
#rm -f "*/Uninstall *.lnk"
# ===
# Start Menu
function do_move_1 {
# single file, move to root
( cat << END
AMD Gaming Evolved
AMD Radeon Settings
AMD Settings
Android Studio
Battle.net
Blizzard App
CRYENGINE Launcher
DB Browser for SQLite
Double Commander
EVE Launcher
Evernote
Filter Forge 3
Filter Forge 4
Google Chrome
Google Drive
HWiNFO64
Intel XDK
JetBrains Toolbox
kdenlive
KeepasXC
League of Legends
Lidarr
loopMIDI
Microsoft Edge
Microsoft Silverlight
Mumble
Music Manager
Notepad++
Overwatch
Overwatch Test
Pushbullet
ProjectLibre
Radarr
Raptr
Rclone Browser
Sonarr
SpriteIlluminator
Skype
Star Citizen Launcher
Twitch Launcher
Visual Studio Code
END
) | while read DIR ; do
if [ ! -d "$DIR" ] ; then
continue
fi
mv -f "$DIR/$DIR.lnk" "$START"
rmdir "$DIR"
done
}
function do_move_2 {
# same file, move to root
# remove everything else
( cat << END
Algodoo
Amazon Cloud Drive
Amazon Drive
Amazon Music
AMD Catalyst Control Center
AirExplorer
aTube Catcher
AutoFirma
BCUninstaller
CCleaner
ComicRack
Deluge
Defraggler
DiskCheckup
DP Animation Maker
Dropbox
Eagle Mode
Ethereum Wallet
FastoNoSQL
Free Clipboard Viewer
FreeMind
Freenet
Freeplane
Foxit Reader
GameMaker Player
GameMaker Studio 2
GDevelop
Glary Utilities 5
GridMove
Handbrake
HiSuite
HomeBank
Hybrid
Jackett
Kodi
MadAppLauncher
Malwarebytes
Malwarebytes Anti-Malware
Malwarebytes Anti-Exploit
MicroSIP
mIRC
Mumble
Namecoin
Oracle VM VirtualBox
Origin
ownCloud
ParkControl
qBittorrent
qTox
Rapid Environment Editor
RaySupreme
Rejoice
Samsung Magician
Second Life Viewer
SDFormatter
Singularity (64 bit) Viewer
Singularity (64 bit) Viewer
Software Informer
Sourcetrail 64-bit
SparseChecker
Spine
Steam
SuperPuTTY
TeamSpeak 3 Client
TikiOne Steam Cleaner
Tiled
VeraCrypt
VirusTotal Uploader 2.2
wxFormBuilder
XnView
yEd Graph Editor
Youtube-DLG
WinDirStat
WinMerge
END
) | while read DIR ; do
if [ ! -d "$DIR" ] ; then
continue
fi
mv -f "$DIR/$DIR.lnk" "$START"
rm -f "$DIR"/*.lnk
rm -f "$DIR"/*.LNK
rm -f "$DIR"/*.url
rm -f "$DIR"/*.URL
rmdir -p "$DIR"
done
}
function do_move_3 {
# "name *" files or dirs, move to "name" dir
# copy, don't replace dirs
( cat << END
Autodesk
Adobe
END
) | while read DIR ; do
for f in "$DIR "* ; do
if [ ! -e "$f" ] ; then
continue
fi
mkdir "$START"/"$DIR"/ &>/dev/null
if [ -d "$START"/"$DIR"/"$f" ] ; then
cp -Rf "$f" "$START"/"$DIR"/
rm -Rf "$f"
else
mv "$f" "$START"/"$DIR"/
fi
done
done
}
function do_move_s1 {
# special cases
DIR="Everything"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Search Everything.lnk" "$START"/"Everything.lnk"
rm -f "$DIR"/"Uninstall Everything.lnk"
rmdir "$DIR"
fi
DIR="Amazon/Amazon Kindle"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Kindle.lnk" "$START"/"Kindle.lnk"
rm -f "$DIR"/"Uninstall Kindle.lnk"
rmdir -p "$DIR"
fi
DIR="Yubico/YubiKey NEO Manager"
if [ -d "$DIR" ] ; then
mv "$DIR"/"YubiKey NEO Manager.lnk" "$START"/"YubiKey NEO Manager.lnk"
rm -f "$DIR"/"Uninstall.lnk"
rm -f "$DIR"/"Yubico Web page.url"
rmdir -p "$DIR"
fi
DIR="4K Download"
if [ -d "$DIR" ] ; then
mv "$DIR"/"4K Video Downloader.lnk" "$START"/"4K Video Downloader.lnk"
rmdir "$DIR"
fi
DIR="Beurer"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Beurer HealthManager.lnk" "$START"/"Beurer HealthManager.lnk"
rmdir "$DIR"
fi
DIR="Synfig"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Synfig Studio.lnk" "$START"/"Synfig Studio.lnk"
rm -f "$DIR"/"Synfig Studio (Debug Console).lnk"
rm -f "$DIR"/"Uninstall Synfig Studio.lnk"
rmdir "$DIR"
fi
DIR="TexturePacker"
if [ -d "$DIR" ] ; then
mv "$DIR"/"TexturePackerGUI.lnk" "$START"/"TexturePackerGUI.lnk"
rmdir "$DIR"
fi
DIR="Logitech"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Logitech Gaming Software "*".lnk" "$START"/"Logitech Gaming Software.lnk"
rmdir "$DIR"
fi
DIR="Twine 2"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Twine.lnk" "$START"/"Twine 2.lnk"
rm -f "$DIR"/"Uninstall.lnk"
rmdir "$DIR"
fi
DIR="QuickTime"
if [ -d "$DIR" ] ; then
mv "$DIR"/"QuickTime Player.lnk" "$START"/"QuickTime Player.lnk"
rm -f "$DIR"/"Acerca de QuickTime.lnk"
rm -f "$DIR"/"Desinstalar QuickTime.lnk"
rmdir "$DIR"
fi
DIR="Zim Desktop Wiki"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Zim.lnk" "$START"/"Zim.lnk"
rm -f "$DIR"/"Uninstall.lnk"
rm -f "$DIR"/"README for Zim for Windows.lnk"
rm -f "$DIR"/"Zim (Debug Mode).lnk"
rmdir "$DIR"
fi
DIR="Bitcoin Core"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Bitcoin Core (64-bit).lnk" "$START"/"Bitcoin Core (64-bit).lnk"
mv "$DIR"/'Bitcoin Core (testnet, 64-bit).lnk' "$START"/'Bitcoin Core (testnet, 64-bit).lnk'
rm -f "$DIR"/"Uninstall Bitcoin Core (64-bit).lnk"
rmdir "$DIR"
fi
DIR="7-Zip"
if [ -d "$DIR" ] ; then
mv "$DIR"/"7-Zip File Manager.lnk" "$START"/"7-Zip File Manager.lnk"
rm -f "$DIR"/"7-Zip Help.lnk"
rmdir "$DIR"
fi
DIR="Geeks3D/Benchmarks/FurMark"
if [ -d "$DIR" ] ; then
mv -f "$DIR/Furmark.lnk" "$START" &&
rm -f "$DIR"/*.lnk
rm -f "$DIR"/*.LNK
rm -f "$DIR"/*.url
rm -f "$DIR"/*.URL
rmdir -p "$DIR"
fi
DIR="Cygwin"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Cygwin Terminal.lnk" "$START"/"Cygwin Terminal.lnk"
mv "$DIR"/"Cygwin64 Terminal.lnk" "$START"/"Cygwin64 Terminal.lnk"
rmdir "$DIR"
fi
DIR="Atlassian/SourceTree"
if [ -d "$DIR" ] ; then
mv "$DIR"/"SourceTree.lnk" "$START"/"SourceTree.lnk" &&
rm -f "$DIR"/"Check For Updates.lnk"
rmdir -p "$DIR"
fi
DIR="Auslogics/Disk Defrag"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Auslogics Disk Defrag.lnk" "$START"/"Auslogics Disk Defrag.lnk"
rm -f "$DIR"/"Auslogics Disk Defrag on the Web.url"
rm -f "$DIR"/"Uninstall Auslogics Disk Defrag.lnk"
rmdir -p "$DIR"
fi
DIR="Auslogics"
if [ -d "$DIR" ] ; then
rmdir "$DIR"
fi
DIR="PDFCreator"
if [ -d "$DIR" ] ; then
mv "$DIR"/"PDFCreator.lnk" "$START"/"PDFCreator.lnk" &&
rm -f "$DIR"/"Licenses"/*.lnk
rmdir "$DIR"/"Licenses"
rm -f "$DIR"/*.lnk
rmdir "$DIR"
fi
DIR="Krita (x64)"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Krita (x64).lnk" "$START"/"Krita (x64).lnk" &&
rm -f "$DIR"/"Tools/Uninstall Krita.lnk"
rmdir "$DIR"/"Tools"
rmdir "$DIR"
fi
DIR="Krita"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Krita (x64).lnk" "$START"/"Krita.lnk" &&
rm -f "$DIR"/"Tools/Uninstall Krita (x64).lnk"
rmdir "$DIR"/"Tools"
rmdir "$DIR"
fi
DIR="EAGLE Layout Editor 7.5.0"
if [ -d "$DIR" ] ; then
mv "$DIR"/"EAGLE 7.5.0.lnk" "$START"/"EAGLE 7.5.0.lnk" &&
rm -f "$DIR"/*.lnk
rmdir "$DIR"
fi
DIR="Avira/Antivirus"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Start Avira Antivirus.lnk" "$START"/"Avira Antivirus.lnk" &&
rm -f "$DIR"/*.lnk
rmdir -p "$DIR"
fi
DIR="Avira"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Avira Launcher.lnk" "$START"/"Avira Launcher.lnk"
rm -f "$DIR"/"Avira Software Updater.lnk"
rmdir "$DIR"
fi
DIR="DCSoft"
if [ -d "$DIR" ] ; then
mv "$DIR"/"RegEditX.lnk" "$START"/"RegEditX.lnk"
rm -f "$DIR"/"Uninstall RegEditX.lnk"
rmdir "$DIR"
fi
DIR="Chat Mapper"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Chat Mapper.exe.lnk" "$START"/"Chat Mapper.lnk"
rm -f "$DIR"/"Chat Mapper Help.lnk"
rm -f "$DIR"/"Online Help Desk.url"
rmdir "$DIR"
fi
DIR="NetBeans"
if [ -d "$DIR" ] ; then
mv "$DIR"/"NetBeans IDE "*".lnk" "$START"/
rmdir "$DIR"
fi
DIR="Backblaze"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Backblaze Control Panel.lnk" "$START"/"Backblaze Control Panel.lnk"
rm -f "$DIR"/"Help.lnk"
rmdir "$DIR"
fi
DIR="Netgear/ProSafe Plus Utility"
if [ -d "$DIR" ] ; then
mv "$DIR"/"ProSafe Plus Utility.lnk" "$START"/"Netgear ProSafe Plus Utility.lnk"
rm -f "$DIR"/"Uninstall ProSafe Plus Utility.lnk"
rmdir -p "$DIR"
fi
DIR="Tracktion 6"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Tracktion 6 (x64).lnk" "$START"/"Tracktion 6 (x64).lnk"
rm -f "$DIR"/"Tracktion 6 (website).lnk"
rm -f "$DIR"/"Uninstall Tracktion 6.lnk"
rmdir "$DIR"
fi
IFS=$'\n'
for DIR in `ls -d "FreeCAD "* 2> /dev/null | sort -nr` ; do
mv "$DIR"/"FreeCAD.lnk" "$START"/"FreeCAD.lnk"
rm -f "$DIR"/"Uninstall.lnk"
rmdir "$DIR"
done
IFS=$'\n'
for DIR in `ls -d "pgAdmin III "* 2> /dev/null | sort -nr` ; do
mv "$DIR"/"pgAdmin III.lnk" "$START"/"pgAdmin III.lnk"
rm -f "$DIR"/"Documentation (English).lnk"
rmdir "$DIR"
done
IFS=$'\n'
for DIR in `ls -d "Unity 5."*" (64-bit)" 2> /dev/null | sort -nr` ; do
mv "$DIR"/"Unity.lnk" "$START"/"Unity 5 (64-bit).lnk"
rm -f "$DIR"/"Unity Documentation.lnk"
rm -f "$DIR"/"Report a Problem with Unity.lnk"
rmdir "$DIR"
done
DIR="DB Browser for SQLite"
if [ -d "$DIR" ] ; then
mv "$DIR"/"SqliteBrowser.lnk" "$START"/"SqliteBrowser.lnk"
rm -f "$DIR"/"Uninstall.lnk"
rmdir "$DIR"
fi
DIR="Google Earth"
if [ -d "$DIR" ] ; then
mv "$DIR"/"Start Google Earth.lnk" "$START"/"Google Earth.lnk"
rm -f "$DIR"/"Start Google Earth in DirectX mode.lnk"
rm -f "$DIR"/"Start Google Earth in OpenGL mode.lnk"
rm -f "$DIR"/"Uninstall Google Earth.lnk"
rmdir "$DIR"
fi
DIR="Lumberyard"
if [ -d "$DIR" ] ; then
rmdir -p "$DIR"/*
fi
DIR="Glarysoft/Software Update"
if [ -d "$DIR" ] ; then
mv -f "$DIR/Software Update.lnk" "$START" &&
rm -f "$DIR"/*.lnk
rm -f "$DIR"/*.LNK
rm -f "$DIR"/*.url
rm -f "$DIR"/*.URL
rmdir -p "$DIR"
fi
DIR="Blender"
if [ -d "$DIR" ] ; then
mv "$DIR"/"blender.lnk" "$START"/"blender.lnk"
rmdir "$DIR"
fi
DIR="Code52"
if [ -d "$DIR" ] ; then
mv "$DIR"/"MarkPad.appref-ms" "$START"/"MarkPad.appref-ms"
rmdir "$DIR"
fi
}
function do_delete_1 {
# delete single links from start menu
( cat << END
Start Tor Browser
Start Tor Messenger
END
) | while read LINK ; do
if [ ! -f "$START/$LINK.lnk" ] ; then
continue
fi
rm -f "$START/$LINK.lnk"
done
}
# ===
# Desktop
function do_move_desktop_1 {
# move single links from desktop
( cat << END
4K Video Downloader
Absolute Uninstaller
AirExplorer
Algodoo
Amazon Backup
Amazon Drive
Amazon Music
Arduino
Atom
aTube Catcher
Audacity
Auslogics Disk Defrag
AutoFirma
Avira Launcher
Battle.net
blender
Blizzard App
BCUninstaller
Bitwarden
BleachBit
BlueStacks
BlueStacks Multi-Instance Manager
CCleaner
ComicRack
Construct 2
CPUID CPU-Z
CRYENGINE Launcher
Curse
Cygwin Terminal
Cygwin64 Terminal
Defraggler
Deluge
Discord
DiskCheckup
DP Animation Maker
draw.io
Dropbox
Duplicati 2
Epic Games Launcher
Electrum
Electrum-NMC
Ethereum Wallet
Evernote
Everything
FastCopy
FastoNoSQL
Firefox
Firefox Developer Edition
foobar2000
Foxit Reader
Free Clipboard Viewer
FreeMind
Freeplane
GameMaker Studio 2
GDevelop
Gephi
Ghost
GIMP 2
Glary Utilities 5
Google Drive
Google Earth
Google Earth Pro
Google Play Music Desktop Player
GPU-Z
Handbrake
HiSuite
Idazki Desktop
IKATZ en Casa
Inkscape
IPFS Desktop
IrfanView
itch
Jellyfin
Jitsi
KeePass 2
Kindle
Kleopatra
Krita
Krita (x64)
League of Legends
Lidarr
Malwarebytes
Malwarebytes Anti-Malware
Media Player Classic
MicroSIP
mIRC
Mozilla Firefox
Mozilla Thunderbird
Mumble
Namecoin-Qt
Nextcloud
Notepad++
OBS Studio
OneDrive
OpenBazaar
OpenVPN GUI
Oracle VM VirtualBox
Origin
ownCloud
paint.net
PatchCleaner
PDFCreator
Pencil
Process Hacker 2
ProSafe Plus Utility
PrusaSlicer
PuTTY
PyxelEdit
qBittorrent
qTox
Radarr
Rapid Environment Editor
Raptr
Riot
SDFormatter
SeaChest Utilities
Second Life Viewer
Signal
Skype
Software Update
Sonarr
Sony Channel Editor
SourceTree
Spotify
SpriteIlluminator
Star Citizen Launcher
Steam
Sourcetrail 64-bit
Stellarium
TeamSpeak
TeamSpeak 3 Client
Telegram
TexturePackerGUI
Tiled
Tracktion 6 (x64)
Twitch
Twitch Launcher
UltraDefrag
Unity Hub
Uplay
VirusTotal Uploader 2.2
Visual Studio Code
VLC media player
WhatsApp
WinMerge
WinSCP
XnView
yed
yEd Graph Editor
Zotero
FL Studio 20
EAGLE
FreeCAD 0.18
LPD8 Editor
MultiPar
Samsung Magician
Search Everything
SUMo
VVV (Virtual Volumes View)
GPA
Core Temp
Card Manager
DiskInfoX64
Google Chrome
calibre 64bit - E-book management
AMD Ryzen Master
GeForce Experience
HTTrack Website Copier
Vodafone Mobile Broadband
webcamoid
Microsoft Edge
eclipse
WinDirStat
Wings 3D (x64) 2.2.4
END
) | while read LINK ; do
if [ ! -f "$DESKTOP/$LINK.lnk" ] ; then
continue
fi
mv "$DESKTOP/$LINK.lnk" "$START/$LINK.lnk"
done
}
function do_move_desktop_s1 {
# special cases
LINK="Adobe Creative Cloud"
if [ -f "$LINK.lnk" ] ; then
if [ -d "$START/Adobe" ] ; then
mv "$LINK.lnk" "$START/Adobe/$LINK.lnk"
else
mv "$LINK.lnk" "$START/$LINK.lnk"
fi
fi
( ls "Adobe "*".lnk" 2>/dev/null
) | while read LINK ; do
if [ -d "$START/Adobe" ] ; then
mv "$LINK" "$START/Adobe/$LINK"
else
mv "$LINK" "$START/$LINK"
fi
done
if [ `ls "GitHub"*".lnk" "GitHub"*".appref-ms" 2>/dev/null | wc -l` -gt 0 ] ; then
LINK=`ls -t "GitHub"*".lnk" "GitHub"*".appref-ms" 2>/dev/null | head -n1`
EXT="${LINK##*.}"
mv "$LINK" "$START/GitHub.$EXT"
# double-plus-sure before delete
if [ -f "$START/GitHub.$EXT" ] ; then
rm -f "GitHub"*".lnk" "GitHub"*".appref-ms" 2> /dev/null
fi
fi
LINK="Genymotion"
if [ -f "$LINK.lnk" ] ; then
if [ -d "$START/Genymotion" ] ; then
mv "$LINK.lnk" "$START/Genymotion/$LINK.lnk"
else
mv "$LINK.lnk" "$START/$LINK.lnk"
fi
fi
LINK="Genymotion Shell"
if [ -f "$LINK.lnk" ] ; then
if [ -d "$START/Genymotion" ] ; then
mv "$LINK.lnk" "$START/Genymotion/$LINK.lnk"
else
mv "$LINK.lnk" "$START/$LINK.lnk"
fi
fi
LINK="Chat Mapper.exe"
if [ -f "$LINK.lnk" ] ; then
mv "$LINK.lnk" "$START"/"Chat Mapper.lnk"
fi
LINK="Kitematic (Alpha)"
if [ -f "$LINK.lnk" ] ; then
mkdir -p "$START"/"Docker"
mv "$LINK.lnk" "$START"/"Docker"/"$LINK.lnk"
fi
LINK="Docker Quickstart Terminal"
if [ -f "$LINK.lnk" ] ; then
mkdir -p "$START"/"Docker"
mv "$LINK.lnk" "$START"/"Docker"/"$LINK.lnk"
fi
LINK="Bitcoin Armory"
if [ -f "$LINK.lnk" ] ; then
mkdir -p "$START"/"Armory"
mv "$LINK.lnk" "$START"/"Armory"/"$LINK.lnk"
fi
LINK="CodeXL"
if [ -f "$LINK.lnk" ] ; then
mkdir -p "$START"/"CodeXL"
mv "$LINK.lnk" "$START"/"CodeXL"/"$LINK.lnk"
fi
}
function do_delete_desktop_1 {
# delete single links from desktop
( cat << END
Cheat Engine
FL Studio 12
FL Studio 12 (64bit)
Haroopad - The next document processor
Inno Script Studio
JDownloader 2
LibreOffice 5.0
LibreOffice 5.1
MKVToolNix GUI
Open Broadcaster Software
REAPER (x64)
Start Tor Browser
Start Tor Messenger
Zim Desktop Wiki
END
) | while read LINK ; do
if [ ! -f "$LINK.lnk" ] ; then
continue
fi
rm -f "$LINK.lnk"
done
}
function do_delete_desktop_s1 {
if [ -f "DOSBox "?.??".lnk" ] ; then
rm -f "DOSBox "?.??".lnk"
fi
}
# ===
# public
START='C:/ProgramData/Microsoft/Windows/Start Menu/Programs'
cd "$START" &&
(
do_move_1
do_move_2
do_move_3
do_move_s1
do_delete_1
)
#START=
DESKTOP='C:\Users\Public\Desktop'
cd "$DESKTOP" &&
(
do_move_desktop_1
do_move_desktop_s1
do_delete_desktop_1
do_delete_desktop_s1
)
# ===
# private
START="$USERPROFILE"/'AppData/Roaming/Microsoft/Windows/Start Menu/Programs'
cd "$START" &&
(
do_move_1
do_move_2
do_move_3
do_move_s1
do_delete_1
)
#START=
DESKTOP="$USERPROFILE"/'Desktop'
cd "$DESKTOP" &&
(
do_move_desktop_1
do_move_desktop_s1
do_delete_desktop_1
do_delete_desktop_s1
)
DESKTOP="$USERPROFILE"/'Desktop/_PENDING SORT'
cd "$DESKTOP" &&
(
do_move_desktop_1
do_move_desktop_s1
do_delete_desktop_1
do_delete_desktop_s1
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment