[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] PowerShell怎样复制 快捷方式 链接的源文件到剪贴板?

复制 快捷方式 链接的源文件或目录到剪贴板,以便于可以在别的文件夹中粘贴。
格式:脚本.ps1 任意多个快捷方式...

回复 2# went


    好像不行,粘贴按钮仍然是灰色的

TOP

回复 4# went


    多谢,如果能把该脚本加入到 快捷方式 的右键菜单,就更方便使用了

TOP

回复 6# went


    多文件选择,我使用 发送到 菜单 -> 脚本.ps1解决了
    但框择多个文件时会夹杂着非lnk文件,这时脚本会报错。
    能改成对于传递进来的非lnk文件正常复制吗?即:脚本.ps1 1.lnk 2.txt 3.lnk
    复制1和3的源文件和2.txt到剪贴板

TOP

回复 8# went


    多谢,但使用过程中,只要一个链接所指向的源文件不存在,复制会失败。因为粘贴时什么都不会发生。
    例如:1.lnk 链接 1.txt,2.lnk 链接 2.txt,3.lnk 链接 3.txt,此时我把1.txt删除。然后执行:脚本.ps1 1.lnk 2.lnk 3.lnk
    然后在另一文件夹中执行粘贴将会失败。此时正常的表现应该是跳过1.txt,仅复制2.txt和3.txt。

    另一个是当链接的源文件移动了位置,脚本获取链接的源文件位置仍是旧位置,也会造成复制的失败
    例如:1.lnk 链接 1.txt(假设为c:\1.txt),然后移动1.txt到新的位置(d:\1.txt)。
    然后执行:脚本.ps1 1.lnk,获取的源文件路径是c:\1.txt,而不是d:\1.txt

    还有一个是,能否在脚本运行时,检测到shift键按下且剪贴板中有文件内容,则把当前要复制的文件内容追加到剪贴板。(在右键菜单执行脚本)
    例如:2.lnk 链接 2.txt,此时先复制1.txt,按下shift键,然后执行:脚本.ps1 2.lnk,此时剪贴板应存在1.txt和2.txt

TOP

本帖最后由 g495326 于 2022-10-16 22:34 编辑

回复 10# went


    多谢。但还有些问题
    链接的源文件位置变化,运行报错
    链接的源文件是目录时,运行报错
    对于非lnk文件,运行报错

TOP

本帖最后由 g495326 于 2022-10-17 22:19 编辑

回复 12# went


    多谢,但还是有之前的问题1,2
    1、快捷方式 链接的 源文件被删除了,运行报错。这种情况应该跳过这些文件。最后打印出这些快捷方式的路径,并阻塞等待任意键之后结束(之所以阻塞,是因为右键菜单中执行,脚本执行完成后会自动关闭PS窗口)
    2、快捷方式 链接的 源文件 位置被改变,运行也会报错。比如 1.lnk 链接 1.txt,1.txt被移动到另一位置。脚本将无法获取1.txt的新位置
    3、shift的检测有时会检测不到,最后发现是脚本检测shift状态时,shift已被释放。能否脚本一运行就首先检测shift状态

TOP

回复 14# went


    我的意思是,打印出链接失效的快捷方式的本身的路径,比如执行:脚本.ps1 1.lnk,1.lnk的源文件找不到,则打印1.lnk本身的路径并提示按任意键继续
    还有1.lnk 链接的源文件位置变化后,执行:脚本.ps1 1.lnk后,仍能找到新的源文件,而不是以找不到源文件处理。(记事本程序可以在处理这种情况,我想脚本也会有办法吧)
    论坛回复不及时,方便说下微信吗(可短消息回我)

TOP

回复 16# went

不是每遇到一个找不到源文件,就暂停
而是把这些错误搜集起来,在脚本结束前一起显示

TOP

回复 18# went


    还是有之前提到的问题,源文件改名或移动位置,脚本无法获取新的位置,导致失败。而记事本可以。
   

TOP

回复 18# went


    在文件对话框中使用,闪退。能解决下吗?谢谢了

TOP

回复 21# went


    win11有发送到菜单啊,真的,帮帮忙吧!

TOP

回复 23# went


    发送到 不支持文件的,可以创建快捷方式。C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -file <脚本全路径>

TOP

本帖最后由 g495326 于 2022-10-22 12:01 编辑

回复 25# went


    加入pause后仍闪退,我怀疑是ps版本的问题,你版本多少

TOP

回复 25# went


    对于源文件改名的情况,我找到了两篇资料,你看一下
ShellLinkObject.Resolve 方法 (Shldisp.h) - Win32 apps | Microsoft Learn
https://learn.microsoft.com/zh-c ... redirectedfrom=MSDN

IShellLinkA::Resolve (shobjidl_core.h) - Win32 apps | Microsoft Learn
https://learn.microsoft.com/en-u ... ishelllinka-resolve

TOP

返回列表