Este es el tipo de cosa que PowerShell es realmente bueno, y por lo tanto es una razón para evitar los archivos de proceso por lotes y poner en PowerShell el carro.
PowerShell puede hablar con .NET. Por ejemplo, se puede obtener la ubicación del escritorio de la siguiente manera:
[Environment]::GetFolderPath("Desktop")
PowerShell puede hablar con COM objetos, WScript.Shell
, lo que puede crear accesos directos:
New-Object -ComObject WScript.Shell).CreateShortcut(...)
Así que la secuencia de comandos puede tener un aspecto como:
$linkPath = Join-Path ([Environment]::GetFolderPath("Desktop")) "MyShortcut.lnk"
$targetPath = Join-Path ([Environment]::GetFolderPath("ProgramFiles")) "MyCompany\MyProgram.exe"
$link = (New-Object -ComObject WScript.Shell).CreateShortcut($linkpath)
$link.TargetPath = $targetPath
$link.Save()
accesos directos tienen una gran cantidad de ajustes que WScript.Shell no puede manipular, como el "ejecutar como admini opción "strator" Solo se puede acceder a ellos a través de la interfaz de Win32 IShellLinkDataList
, lo cual es un verdadero dolor de usar, pero se puede hacer.
Por favor, no hacer supongamos que los Archivos de programa están en "C: \ Archivos de programa".(% PROGRAMFILES% puede funcionar, sin embargo). Del mismo modo, no asuma que el directorio de inicio del usuario se encuentra en "C: \ Documents and Settings \% USERNAME%" (Es% HOMEDIR%). Y Desktop no puede llamarse Desktop. –
¿Hay alguna solución disponible para crear accesos directos en Windows 7? – JoeYo
@JayBazuzi es '% HomePath%' en Windows 7, 8 y Server 2012. :) – wasatchwizard