Windows-Kurzbeschreibung zum Kurznamen

0

Ich habe eine Reihe von Verknüpfungen und im Moment haben die Verknüpfungen keine sehr aussagekräftigen Namen.

Ich muss sie umbenennen, damit der Name der Verknüpfung mit der Beschreibung der Verknüpfung übereinstimmt.

Bildbeschreibung hier eingeben

Es handelt sich um mehr als 1000 Dateien. Gibt es eine Möglichkeit, einen Batch-Vorgang oder eine Automatisierung durchzuführen?

Arete
quelle
Wenn Sie PowerShell kennen, können Sie dies wahrscheinlich herausfinden .
Vinayak

Antworten:

0

Ich denke auch, dass Ihr Ansatz nicht durchführbar ist. Das folgende Batch / VBScript gab mir nur einen kleinen Prozentsatz nützlicher Umbenennungen (@ Vinayak Ich würde ein -Whatif an die Kopie anhängen, kann keinen Kommentar abgeben) Nach Überarbeitung ausführen.

::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

Bearbeiten Sie die angehängte Beispielausgabe

> q:\test\2016-11\05\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

LotPings
quelle
Danke für den Tipp! Wie Sie sehen, habe ich Powershell nicht viel benutzt.
Vinayak
0

Dank der Antwort von JasonMArcher können Sie mit Powershell für jede Verknüpfung im Ordner so etwas tun:

$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

Entfernen Sie das -WhatIfam Ende, wenn Sie das Skript verwenden.

PS Wenn Sie Powershell kennen, können Sie meine Antwort gerne verbessern.

Vinayak
quelle
Das ist merkwürdig. Anstatt die Beschreibung als Dateinamen zu verwenden, wird stattdessen der Kommentar verwendet. Ich weiß nicht warum, aber ich brauche die Beschreibung als Dateinamen, nicht den Kommentar.
Arete
@Arete Ich glaube, das liegt daran, dass die Beschreibung in der EXE-Datei gespeichert ist, auf die die Verknüpfung verweist. Die Verknüpfung selbst scheint nur den Kommentar zu enthalten.
Vinayak
@ Arete Was Sie wollen, ist(Get-Item 'path\to\exe').VersionInfo.FileDescription
Vinayak