将动态参数传递给 CMD 并保存命令

Posted

技术标签:

【中文标题】将动态参数传递给 CMD 并保存命令【英文标题】:Passing dynamic parameters to CMD and saving the command 【发布时间】:2021-05-27 19:49:42 【问题描述】:

我想对通过上下文菜单在 Windows 10 文件资源管理器中预先选择的文件夹(理想情况下还有文件 - 单个和多个文件)进行密码加密。不幸的是,我找不到任何能够做到这一点的程序。如果您碰巧知道请告诉我,那将是完美的解决方案。

否则,this tool 是我能找到的最接近描述的要求。但是,它需要通过自己的导航窗口手动导航到所需的文件夹,因此仅通过右键单击 Windows 文件资源管理器中的文件夹是行不通的。但我有一个解决方法的想法:该工具支持 CMD 命令行,以便可以像这样加密文件夹:

"C:\Program Files (x86)\EncryptOnClick\EncryptOnClick.exe" -p password -e "C:\Users\username\Documents\Test" 

如果我可以制作 passwordTest-文件夹动态变量并存储 CMD 命令或使其成为批处理、AHK-、VBscript-、Powershell- 或任何我可以将该脚本附加到registry key HKEY_CLASSES_ROOT\Directory\shell key as described here,对,它会在文件资源管理器中右键单击文件夹时出现在上下文菜单中。

但是我如何制作password(应该提示我输入我的选择之一)和Test-文件夹(我已经在文件资源管理器中右键单击)动态变量并存储整个内容作为我可以附加到 HKEY_CLASSES_ROOT\Directory\shell 的脚本,以便脚本出现在上下文菜单中?

非常感谢!

【问题讨论】:

这听起来像是SuperUser 问题 【参考方案1】:

请参阅call /? 了解如何处理参数。使用set /p 获取用户输入(如果您不喜欢输入的大黑框,则必须切换到另一种语言(或使用一种语言的帮助);cmd 是基于命令行的):

@echo off
set /p "pass=Enter password: "
"C:\Program Files (x86)\EncryptOnClick\EncryptOnClick.exe" -p %pass% -e "%~1"

将该脚本的快捷方式放在%APPDATA%\Microsoft\Windows\SendTo\

【讨论】:

非常感谢!首先我认为它不起作用,但它与作为密钥输入注册表的“C:\Users\username\Documents\Encrypt.bat”%1"' 结合使用(Encrypt.bat 包括您的代码)。 【参考方案2】:

无需亲自尝试,我相信您可以使用 AHK 轻松做到这一点:

;the folder/file path should be here
path := A_Args[1]
InputBox, pass, % "Encrypt File/Folder", % "Enter a password", HIDE
command := """C:\Program Files (x86)\EncryptOnClick\EncryptOnClick.exe"" -p """ pass """ -e """ path """"

;verify that the command we're about to launch is correct
;obviously you'd remove this from the real final version of the script
MsgBox, 4, % "Check command", % "Is this command correct?`n" command
IfMsgBox, Yes
    Run, % command

在其中添加了一个测试消息框,以便您查看它是否按预期工作。 相关文档链接:A_Args、InputBox、Escaping quotes 和 MsgBox

【讨论】:

以上是关于将动态参数传递给 CMD 并保存命令的主要内容,如果未能解决你的问题,请参考以下文章

如何将参数传递给 erlang os:cmd()?

如何从.net代码将表值参数传递给存储过程

将命令行参数传递给 AWS Fargate 容器

将命令行参数传递给python脚本[重复]

是否存在某种方式将自定义参数传递给 Firebase 上的短动态链接?

将 PowerShell 参数传递给 Process.Start