您好,我有大約 122 個資料夾,其中所有 exe 都與資料夾名稱相符。有沒有辦法編寫腳本來為資料夾中的每個 exe 建立捷徑,並且沒有「捷徑」標籤。只是試圖透過一些巧妙的腳本來避免手動進行一一操作...
答案1
rem must be run in a window with admin privileges
rem windows 10 cmd batch file to create a hard shortcut to all .exe files on a volume if placed in the root folder;
rem in a folder and all subfolders if not placed in the root folder. the shortcut is created in the folder where the .exe is.
rem the "shortcut" extension should not be part of the filename. the .lnk extension should be part of the filename.
rem links that already exist to .exe files should be deleted.
rem see mklink /? and https://ss64.com/nt/mklink.html
rem mklink saveShortcutAs targetOfShortcut
@echo off
setlocal enableextensions
rem begin turn off shortcut name extension
rem see https://www.tenforums.com/tutorials/4663-shortcut-name-extension-turn-off-windows-10-a.html
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" /V link /T REG_Binary /D 00000000 /F
Reg Delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\NamingTemplates" /V ShortcutNameTemplate /F
taskkill /f /im explorer.exe
start explorer.exe
rem end turn off shortcut name extension
rem the following command deletes all links to .exe files.
FOR /f "tokens=*" %%a IN ('dir /b /s *.exe.lnk') DO del "%%a"
FOR /f "tokens=*" %%a IN ('dir /b /s *.exe') DO mklink /h "%%a.lnk" "%%a"
exit /b
參見 mklink /?
參見命令/?
看到/?
參見目錄/?
建立一個Windows 10 cmd 批次文件,該文件必須在具有管理員權限的視窗中運行,如果放置在根資料夾中,該文件將建立磁碟區上每個.exe 檔案的硬快捷方式,以及資料夾和所有子資料夾中的每個.exe 檔案的硬捷徑沒有放置在根目錄中。 「快捷方式」副檔名不應成為檔案名稱的一部分。 .lnk 副檔名應該是檔名的一部份。應刪除已存在的 .exe 檔案的連結。
答案2
我建立快捷方式的首選方法是在批次中建立臨時 VB 腳本。您的解決方案可能如下所示:
@echo off
set "des=C:\Where\You\Want\The\Shortcuts"
set "src=C:\Root\Folder\Of\Executables"
setlocal enabledelayedexpansion
for /r "%src%" %%A in (*.exe) do (
set "exe=%%A"
set "name=%%~nA"
set "SCRIPT=%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs"
echo Set oWS = WScript.CreateObject^("WScript.Shell"^) >> !SCRIPT!
echo sLinkFile = "%des%\!name!.lnk" >> !SCRIPT!
echo Set oLink = oWS.CreateShortcut^(sLinkFile^) >> !SCRIPT!
echo oLink.TargetPath = "!exe!" >> !SCRIPT!
echo oLink.Save >> !SCRIPT!
cscript /nologo !SCRIPT!
del !SCRIPT!
)
這會為您想要快捷方式的位置(des
即,如果您希望它們位於您的%USERPROFILE%\Desktop
資料夾或其他資料夾中)和可執行檔案所在的位置(src
)設定變數。我們必須setlocal enabledelayedexpansion
這樣做,以便我們可以在 for 循環中使用變數 - 即:位於我們目錄中的for
所有可執行檔 ( ) ,將 .exe 的完全限定路徑設為,然後將 .exe 的名稱設為(不包括擴展名)。下一部分是 VB 腳本 - 我們在 TEMP 資料夾中設定一些隨機命名的 .vbs 文件,然後將 VBS 命令回顯到該腳本中,運行它並刪除它。 For 迴圈的每次迭代都會發生這種情況,直到它為每個執行檔建立了捷徑。*.exe
src
exe
name
SCRIPT
關於 VBS 行需要注意的重要事項:sLinkFile
確定建立捷徑的位置及其名稱;oLink.TargetPath
引用可執行檔的完整路徑;for 迴圈中的變數!
使用 ' 代替';%
當我們將括號回顯到 VBS 檔案時,必須使用^
.希望這完全符合您的要求——只需要您設定des
和src
變數。
答案3
無法抗拒發文電源外殼版本:
$TopFolder = 'C:\FolderWithExeSubfolders'
Get-ChildItem -Path $TopFolder -Filter *.exe -File -Recurse | ForEach-Object -Begin {
$WSHshell = New-Object -com wscript.shell
} -Process {
### Using the folder name as the base name for the shortcut. This allows you the
### option of giving the folder a "display name" to be used.
$NewLnkPath = '{0}\{1}.lnk' -f $_.DirectoryName, $_.Directory.Name
$NewShortcut = $WSHshell.CreateShortcut($NewLnkPath)
$NewShortcut.TargetPath = $_.FullName
### Optional
### $NewShortcut.Arguments = <string>
### $NewShortcut.Description = <string>
### $NewShortcut.Hotkey = <string>
### $NewShortcut.IconLocation = <string>
### $NewShortcut.WindowStyle = <1|2|7>
### $NewShortcut.WorkingDirectory = <string>
$NewShortcut.Save()
} -End {}