WindowsのDesktopにあるショートカットのホットキー/ターゲットパス/ワーキングディレクトリをCSVファイルとして書き出すPowerShellスクリプト
PowerShellスクリプトを実行するためのバッチファイル〔ホットキーを設定する対象〕
:: バッチファイルをUTF-8で保存するときのバッチファイルの先頭は、【1】【2】のどちらでもよい。
:: UTF-8保存時は[BOMなし]と[改行コードCR+LF]の設定が必須である。
:: ●●●【1】
:: @echo off
:: chcp 65001 > nul
:: ●●●【2】
:: chcp 65001 > nul
:: @echo off
@echo off
chcp 65001 > nul
powershell -NoProfile -ExecutionPolicy RemoteSigned -File "%~dp0ShortcutList.ps1"
pause
WindowsのDesktopにあるショートカットのホットキー/ターゲットパス/ワーキングディレクトリをCSVファイルとして書き出すPowerShellスクリプト
$folder = "C:\Users\$env:username\Desktop"
if (!(Test-Path $folder)) {
Write-Host "指定したフォルダが存在しません: $folder"
pause
exit
}
$lnkFiles = Get-ChildItem $folder -Filter *.lnk
Write-Host ".lnkファイル数:" $lnkFiles.Count
if ($lnkFiles.Count -eq 0) {
Write-Host "ショートカットファイルが見つかりません。"
pause
exit
}
$results = @()
foreach ($file in $lnkFiles) {
Write-Host "処理中:" $file.FullName
try {
$shell = New-Object -ComObject WScript.Shell
$shortcut = $shell.CreateShortcut($file.FullName)
$obj = [PSCustomObject]@{
Name = $file.Name
Hotkey = $shortcut.Hotkey
TargetPath = $shortcut.TargetPath
WorkingDirectory = $shortcut.WorkingDirectory
}
Write-Host " Hotkey:" $obj.Hotkey
Write-Host " TargetPath:" $obj.TargetPath
Write-Host " WorkingDirectory:" $obj.WorkingDirectory
$results += $obj
} catch {
Write-Host "エラー:" $_
}
}
Write-Host "結果件数:" $results.Count
if ($results.Count -eq 0) {
Write-Host "出力データがありません。"
pause
exit
}
$csvPath = Join-Path $folder "ショートカット一覧.csv"
Write-Host "CSV出力先:" $csvPath
$results | Export-Csv -Path $csvPath -NoTypeInformation -Encoding UTF8
Write-Host "CSV出力完了"
pause