You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Windows快捷方式结合PowerShell解压Zip文件的求助

解决Windows快捷方式调用PowerShell解压同目录Zip文件的问题

你的原命令存在核心问题:$MyInvocation.MyCommand.Definition返回的是powershell.exe的安装路径,而非快捷方式所在的文件夹,因此无法正确定位同目录下的file.zip。以下是两种可行的解决方案:

方案一:利用快捷方式起始位置(默认场景首选)

默认情况下,新建的快捷方式「起始位置」会自动设置为自身所在文件夹,直接利用这个特性即可:

  1. 右键快捷方式 → 属性 → 目标栏替换为以下命令:
    powershell.exe -ExecutionPolicy Bypass -NoExit -Command "Expand-Archive -Path `"$PWD\file.zip`" -DestinationPath `"$Env:USERPROFILE\Desktop\Extracted`""
    
  2. 说明:$PWD是PowerShell内置变量,启动时会自动读取快捷方式的「起始位置」路径,也就是zip文件所在的文件夹。

方案二:强制获取快捷方式路径(适用于起始位置被修改的场景)

如果快捷方式的「起始位置」被手动改动,用以下命令确保能正确定位zip文件:

  1. 替换快捷方式目标为:
    powershell.exe -ExecutionPolicy Bypass -NoExit -Command "$shortcutPath = Split-Path -Path (New-Object -ComObject WScript.Shell).CreateShortcut((Get-WmiObject Win32_Process -Filter 'ProcessId = $PID').CommandLine.Split('`"')[1]).FullName -Parent; Expand-Archive -Path `"$shortcutPath\file.zip`" -DestinationPath `"$Env:USERPROFILE\Desktop\Extracted`""
    
  2. 说明:通过WMI获取当前PowerShell进程的命令行,提取快捷方式路径后解析其实际所在文件夹,彻底摆脱对起始位置的依赖。

额外优化建议

  • 不需要保留PowerShell窗口的话,去掉命令中的-NoExit参数
  • 加上-Force参数可以覆盖Extracted文件夹中已存在的文件,修改后的命令片段:Expand-Archive -Path ... -DestinationPath ... -Force
  • 添加文件存在检查,避免无意义报错:
    powershell.exe -ExecutionPolicy Bypass -Command "$zipPath = Join-Path $PWD 'file.zip'; if (Test-Path $zipPath) { Expand-Archive -Path $zipPath -DestinationPath `"$Env:USERPROFILE\Desktop\Extracted`" -Force } else { Write-Error 'file.zip未在快捷方式所在文件夹找到' }"
    

内容的提问来源于stack exchange,提问作者phil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 17:14:55