Descrição do atalho do Windows para o nome do atalho

0

Eu tenho um monte de atalhos e agora os atalhos não têm nomes muito significativos.

Eu preciso renomeá-los para que o nome do atalho seja igual à descrição do atalho.

São cerca de 1000 arquivos. Existe alguma maneira de fazer uma operação em lote ou automação?

    
por Arete 05.11.2016 / 09:17

2 respostas

0

Eu também acho que sua abordagem não é viável. O seguinte lote / vbscript só me deu uma pequena porcentagem de renomeações úteis (@Vinayak eu adicionaria um -Whatif para a cópia não pode comentar) O lote gera comandos de renomeação que você pode redirecionar para um arquivo como "FazerRenames.cmd" e após a execução da revisão.

::ListLnkProps.cmd:::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off&setlocal enabledelayedexpansion
:: create .\ListLnkProps.vbs
for /f "tokens=1 delims=:" %%A in (
  'findstr /I /N "##ListLnkProps" ^<"%~f0"') do set /A ln#=%%A - 1
more +%ln#% "%~f0" >"%~dpn0.vbs"

:: List.lnk file properties in curent folder and subfolders
for /f "delims=" %%A in (
  'dir /A-D /b /s *.lnk'
) do cscript //nologo "%~dpn0.vbs" "%%A"
goto :eof

' ##ListLnkProps.vbs
set WshShell = WScript.CreateObject("WScript.Shell")
File = WScript.Arguments.Unnamed(0)
set Lnk = WshShell.CreateShortcut(File)
NewName =  Lnk.Description & ".lnk"
If Len(Lnk.Description) > 8 Then
  wscript.Echo "Ren " & chr(34) & File & chr(34) & " " & _
                        chr(34) & NewName & chr(34) 
End If
set Lnk = Nothing

Editar saída de amostra anexada

> q:\test16-11\ListLnkProps.cmd
Ren "C:\Users\UserName\Desktop\Google Chrome.lnk" "Internetzugriff.lnk"
Ren "C:\Users\UserName\Desktop\On-Screen Keyboard.lnk" "Zeigt eine Tastatur an, die von einer Maus oder einem Umschalteingabegerät gesteuert wird..lnk"
Ren "C:\Users\UserName\Desktop\Programm_Links\Alarm.lnk" "Digital Alarm Clock.lnk"
Ren "C:\Users\UserName\Desktop\Programm_Links\Avira.lnk" "Avira starten.lnk"
Ren "C:\Users\UserName\Desktop\Programm_Links\Bitvise SSH Client.lnk" "Bitvise SSH Client L7.15 - a general-purpose SSH client: supports tunneling (manual and via integrated proxy), SFTP file transfer, bridging of FTP clients to SFTP, remote console access and remote administration of Bitvise SSH Server (WinSSHD)..lnk"
Ren "C:\Users\UserName\Desktop\Programm_Links\calibre - E-book management.lnk" "Manage your e-book collection and download news.lnk"
Ren "C:\Users\UserName\Desktop\Programm_Links\calibre 64bit - E-book management.lnk" "Manage your e-book collection and download news.lnk"
Ren "C:\Users\UserName\Desktop\Programm_Links\CDBurnerXP.lnk" "CDBunerXP.lnk"

HTH

    
por 05.11.2016 / 11:46
0

Graças a resposta do JasonMArcher , você pode fazer algo assim para cada atalho na pasta usando o Powershell:

$lnk = "path\to\shortcut.lnk"
$dest = $Env:Userprofile + "\Desktop\"
$shell = New-Object -COM WScript.Shell
Copy-Item $lnk $($dest + 
(Get-Item $shell.CreateShortcut($lnk).TargetPath).VersionInfo.FileDescription + ".lnk") -WhatIf

Remova o -WhatIf no final ao usar o script.

p. S. Se você conhece o Powershell, fique à vontade para melhorar a minha resposta.

    
por 05.11.2016 / 11:09