我确实尝试过这个 test.reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\audio\shell\ChunkAudio]@="chunk audio (5 min)""Icon"="%SystemRoot%\\System32\\shell32.dll,186"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\audio\shell\ChunkAudio\Command]@="%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe C:\Users\Me\Desktop\5min_chunk_audio.ps1 %1"
它按预期在音频文件上添加了一个上下文菜单,但是当我单击它时它会发送一个错误:
Windows 无法访问指定的设备、路径或文件。您可能没有适当的权限来访问该项目。
这可能是因为 test.reg 没有向注册表中 ....shell\ChunkAudio\Command 的“数据”字段添加任何内容。(我尝试手动添加%SystemRoot%\system32\... C:\...audio.ps1 %1
)
我也尝试过:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\audio\shell\ChunkAudio\Command]
@="CMD.EXE /C Powershell.exe -File C:\\Users\\Me\Desktop\\petit_program\\PowerShell\\PowerShell_script\\5min_chunk_audio.ps1 %1"
答案1
尝试像这样制定命令:
@="CMD.EXE /C Powershell.exe -File C:\\Users\\Me\\Desktop\\5min_chunk_audio.ps1 %1"
答案2
完成 harrymc 的回答:
Windows Registry Editor Version 5.00
; set the name + icon in the context menu
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\audio\shell\ChunkAudio]
@="chunk audio"
"Icon"="%SystemRoot%\\System32\\shell32.dll,117"
; run the script
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\audio\shell\ChunkAudio\Command]
@="CMD.EXE /K Powershell.exe -File C:\\Users\\Me\\Desktop\\5min_chunk_audio.ps1 \"%1\""
● CMD.EXE/C
执行字符串指定的命令然后终止
CMD.EXE/K
执行字符串指定的命令但保留(适合调试)
在 cmd 窗口中输入 cmd /? 以查找更多参数。
●%1
是第一个参数(%2 是第二个参数...)。%1 包含文件的路径。我们需要引用该参数才能使用它(否则路径将在第一个空格处被切断)。但是"%1"
不行,因为我们需要转义引号,所以我们写成\"%1\"
。
奖励:要获取脚本中的参数(路径),只需使用$arg
(它是一个“自动变量”。要了解更多信息,请运行Get-Help about_Automatic_Variables
:)