在资源管理器中对选定文件执行PowerShell命令

时间:2016-02-03 13:49:05

标签: powershell explorer

如何仅在资源管理器中的选定文件上在PowerShell中执行重命名命令?我有PS命令,但我不知道在Windows注册表中将它放在哪里可以在资源管理器中右键单击上下文菜单中访问。

2 个答案:

答案 0 :(得分:1)

HKCR:\ * \ shell包含您需要的内容。创建一个新密钥,其名称为您想要的名称(例如"重命名为日期"),然后是一个名为" Command"使用命令的默认值。

例如,mysql_connect("####", "####", "####") or die(mysql_error()); mysql_select_db("####") or die(mysql_error()); // Get all the data from the "example" table $result = mysql_query("SELECT * FROM items") or die(mysql_error()); while($row = mysql_fetch_array($result)) { echo '<input type="text" value='.$row['custom1'].'><br/>'; } 其中(默认)值为HKCR:\*\shell\Rename With Date\Command或其他东西应该是我认为的技巧。

答案 1 :(得分:1)

使用Powershell的New-Item cmdlet向文件资源管理器中添加上下文菜单命令,向命令行写入命令行是非常容易的:

# Add a context-menu item named 'Foo' to the context menu of files 
# that executes a PowerShell command that simply echoes the file path given.
$null = New-ItemProperty `
 -LiteralPath (New-Item -Force "HKCU:\Software\Classes\*\shell\Foo\command").PSPath `
 -Name '(Default)' `
 -Value "$PSHOME\powershell.exe -noprofile -noexit -command '`"%1`"'"

上述目标HKCU:\Software\Classes\*\shellHKEY_CURRENT_USER\Software\Classes\*\shell)因此仅适用于文件;纯文件夹位置为HKCU:\Software\Classes\Folder\shell两个文件和文件夹的位置均为HKCU:\Software\Classes\AllFileSystemObjects\shell
另请注意上面使用-LiteralPath,这对于防止将*中的HKCU:\Software\Classes\*解释为通配符至关重要。
请注意,写入等效的HKEY_LOCAL_MACHINE密钥以使所有用户可以使用该命令将需要提升(作为管理员运行)。 功能

警告是使用此方法每个所选文件调用 的命令,如果选择了多个文件。

换句话说:如果您的意图是重命名文件的,并且您的重命名逻辑要求将该组视为整体,则上述方法胜出'工作。

您可以尝试在脚本本身中解决这个问题,但那将是非常重要的。

更强大的解决方案是创建上下文菜单处理程序,这需要编写“实现为DLL的进程内组件对象模型(COM)对象 < / strong>“(来自docs)。