移动特定起始位置的“快捷方式”
快捷方式都对应一个的目标和“起始位置”,现在想要把特定起始位置的快捷方式移动到一个文件夹中。
新建文本文档,输入如下内容:
# 设置变量
$oldPath = "D:\111\111_1"
$newPath = "D:\111\111_1\2"
# 检查目标文件夹是否存在,如果不存在则创建
if (-not (Test-Path -Path $newPath)) {
New-Item -ItemType Directory -Path $newPath -Force
}
# 获取旧路径的长度
$oldPathLength = $oldPath.Length
# 获取目标文件夹中的所有快捷方式
$shortcuts = Get-ChildItem $oldPath -Filter *.lnk
# 遍历每个快捷方式
foreach ($shortcut in $shortcuts) {
# 获取快捷方式的目标路径
$targetPath = (New-Object -ComObject WScript.Shell).CreateShortcut($shortcut.FullName).TargetPath
# 如果目标路径以旧路径开头
if ($targetPath.Substring(0, $oldPathLength) -eq $oldPath) {
# 将快捷方式移动到新目标文件夹中
Move-Item -Path $shortcut.FullName -Destination $newPath -Force
}
}
路径根据情况修改。代码中的 `$oldPath` 和 `$newPath` 分别代表需要查找的快捷方式起始路径和将要把快捷方式移动到的文件夹路径。也就是将oldPath开头的快捷方式移动到newPath文件夹下。
保存为“.ps1”为后缀的文件,如“111.ps1”。打开powershell,在“111.ps1”的路径下输入“ .\111.ps1”,执行该文件。
按照起始位置对快捷方式分类
按照起始位置对快捷方式分类,相同起始位置的快捷方式被分到同一个文件夹,目标文件夹名称用原始路径与“起始位置去掉盘符后的路径”拼接而成。
新建文本文档,输入如下内容:
# 设置文件夹路径
$folderPath = "D:\111\111_1"
# 获取文件夹中所有的快捷方式文件
$shortcuts = Get-ChildItem -Path $folderPath -Filter *.lnk
# 遍历每个快捷方式文件
foreach ($shortcut in $shortcuts) {
# 获取快捷方式的目标路径
$targetPath = (New-Object -ComObject WScript.Shell).CreateShortcut($shortcut.FullName).TargetPath
# 提取目标路径的起始位置(去掉盘符)
$start = $targetPath.Substring(3)
# 构建目标文件夹路径
$destinationFolder = Join-Path -Path $folderPath -ChildPath $start
# 如果目标文件夹不存在,则创建它
if (-not (Test-Path -Path $destinationFolder)) {
New-Item -ItemType Directory -Path $destinationFolder | Out-Null
}
# 移动快捷方式到目标文件夹
Move-Item -Path $shortcut.FullName -Destination $destinationFolder
}
保存为“.ps1”为后缀的文件,如“111.ps1”。打开powershell,在“111.ps1”的路径下输入“ .\111.ps1”,执行该文件。
报错
powershell运行指令,常出现的报错及处理参见:
Windows系统powershell运行指令常见报错及处理_weixin_56337147的博客-CSDN博客https://blog.csdn.net/weixin_56337147/article/details/130704263