Olá tenho cerca de 122 pastas com exe's em todas elas que correspondem ao nome da pasta. Existe uma maneira de escrever um script para criar um atalho para cada exe dentro das pastas e sem a tag 'atalho'. Apenas tentando evitar fazer isso 1 por 1 manualmente com alguns scripts inteligentes...
Responder1
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
veja mklink /?
veja cmd /?
ver para /?
veja diretório /?
verativar/desativar extensão de nome de atalho
verLinks simbólicos, links físicos e junções de diretório no Windows 10
Crie um arquivo em lote cmd do Windows 10 que deve ser executado em uma janela com privilégios de administrador que criará um atalho para cada arquivo .exe em um volume, se colocado na pasta raiz, e para cada arquivo .exe em uma pasta e todas as subpastas, se não colocado na raiz. a extensão "atalho" não deve fazer parte do nome do arquivo. a extensão .lnk deve fazer parte do nome do arquivo. links que já existem para arquivos .exe devem ser excluídos.
Responder2
Meu método preferido para criação de atalhos é criar um script VB temporário em lote. Sua solução pode ser mais ou menos assim:
@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!
)
Isso define variáveis para onde você deseja seus atalhos ( des
ou seja, se você os deseja em sua %USERPROFILE%\Desktop
ou em alguma outra pasta) e onde seus executáveis estão localizados ( src
). Precisamos fazer setlocal enabledelayedexpansion
isso para que possamos usar variáveis em nosso loop for - que é: for
todos os executáveis ( *.exe
) localizados em nosso src
diretório, definir o caminho totalmente qualificado do .exe como exe
e, em seguida, definir o nome do .exe como name
(não incluir extensão). A próxima parte é o script VB - definimos SCRIPT
um arquivo .vbs com nome aleatório em nossa pasta TEMP, depois repetimos nossos comandos VBS nesse script, executamos e excluímos. Isso acontecerá para cada iteração do seu loop for até que ele tenha criado um atalho para cada executável.
Coisas importantes a serem observadas sobre as linhas VBS: sLinkFile
determina onde seu atalho é criado e como ele é chamado; oLink.TargetPath
faz referência ao caminho completo do seu executável; !
's são usados em vez de %
's para variáveis no loop for; e quando ecoamos os parênteses no arquivo VBS, eles devem ser escapados com um ^
. Esperamos que isso faça exatamente o que você deseja - requer apenas que você defina as variáveis des
e src
.
Responder3
Não resisto a postar oPowerShellversão:
$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 {}