我正在寻找一种方法来将 cmd 或 powershell 脚本应用于某个文件,方法是右键单击 Windows 资源管理器中的文件并选择“应用脚本 XYZ”。
一个用例是使文件具有写保护,因此我的批处理文件将包含:
attrib +r %filename%
%filename%
我在资源管理器中右键单击的文件的名称在哪里。
目前,单个文件就可以解决问题,但我有兴趣将它应用于多个文件(通过选择文件夹中的多个文件)和整个文件夹(通过选择文件夹)。
该解决方案应该适用于 Windows 10,如果可能的话,也适用于 UNC 路径和 Windows 7。
编辑:到目前为止,我已经完成了除 UNC 路径之外的所有工作,此示例适用于文件(使用此来源和此来源):
注册表项:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\SomeName]
@="NameOfTheMenueItem"
"icon"="someicon.ico"
[HKEY_CLASSES_ROOT\*\shell\SomeName\command]
@="\"X:\\folder\\batchfile.cmd\" \"%1\""
批处理文件:
set filepath=%1
attrib +r %filepath%
批处理文件(用于文件夹):
set folderpath=%1
attrib +r %folderpath%\*.*
剩余问题:
- 我需要它为 UNC-Paths 工作
- 返回没有“”的批处理文件的文件夹路径以便将其更改为
"X:\folderpath\*.*"
(目前我得到"X:\folderpath"
的返回值,虽然只是添加\*.*
工作,但结果"X:\folderpath"\*.*
看起来不太好,不确定是否会出现任何问题) - 为选定文件夹的所有文件和子文件夹创建递归写保护