0

https://www.online-tech-tips.com/computer-tips/create-windows-batch-files/解释了如何创建打开一组特定 Windows 命令的命令(批处理)文件。我想概括一下,所以我可以创建包含命令快捷方式的文件夹并运行这样的文件夹(使用命令文件),这意味着我可以使用命令文件执行文件夹中包含的所有命令快捷方式。

我在网上搜索过,找不到这样的命令文件。

我认为我需要的只是一种扫描文件夹并循环执行文件夹中每个命令的方法。可能一个 Windows 标准 .cmd 文件(由 cmd.exe 运行)可以做到这一点,但如果没有,可以使用 Powershell(由 .ps1 命令文件)。

一个示例是在桌面上创建一个文件夹,其中包含与某些特定和重复处理(例如,制作电影或构建应用程序)相关的几个命令快捷方式。我可以通过在资源管理器中打开文件夹来编辑这些命令。当我想在自己的窗口中运行所有命令时,我所要做的就是右键单击桌面上的文件夹,然后选择运行文件夹中所有快捷方式的命令文件的名称。

我希望这很清楚,并且很清楚为什么这样的命令文件在处理其他项目后返回项目时非常有用。

如果没有,请在评论中提问。

4

2 回答 2

3

我对“命令快捷方式”这个短语感到困惑。如果您只想找到当前目录中的所有快捷方式文件,并在单独的窗口中启动每个快捷方式文件,那么这就是您所需要的。

gci *.lnk | % { start $_ }
于 2019-09-22T19:02:51.717 回答
1

Walter Mitty 的有用答案*.lnk显示了一个 PowerShell 命令,该命令打开当前文件夹中的所有快捷方式文件 ( ),使用Start-Process.

这是将其合并到名为 的快捷菜单命令定义中的代码,该定义Open Shortcuts将变为可用:

  • 当您右键单击桌面或文件资源管理器中的文件夹时

  • 当您在文件资源管理器中右键单击打开文件夹的背景时(在这种情况下,该命令将应用于该打开的文件夹)。

如果给定文件夹中存在快捷方式文件,则它们都被打开(异步),就像它们被双击一样;如果没有快捷方式,则会显示警告。

请注意,我的目标是HKEY_CURRENT_USER\Software\Classes而不是HKEY_CLASSES_ROOT,这使得定义是特定于用户的,并且也不需要使用海拔运行:

# Define a shortcut-menu command that opens all shortcut files (*.lnk) in the target folder (%V):

# Define the name to appear in the shortcut menu.
$commandName = 'Open Shortcuts' 

# Define the PowerShell command to run, hidden, via mshta.exe, so that no PowerShell console window opens (temporarily).
$command = @"
mshta.exe vbscript:(CreateObject("WScript.Shell").Run("powershell.exe -noexit -noprofile -c `$f = Get-Item \""%V\*.lnk\""; if (`$f) { `$f | ForEach-Object { Start-Process `$_.FullName } } else { (New-Object -ComObject WScript.Shell).Popup(\""%V contains no shortcut files (*.lnk).\"",0,\""$commandName\"",48) }",0))(Window.Close)'
"@

# Define the shortcut-menu commands in the registry, for:
#  * folders
#  * the background of open folders (to apply the command to the open folder)
'Folder', 'Directory\Background' | ForEach-Object {
  New-Item -Force "HKCU:\Software\Classes\$_\shell\$commandName\command" |
    Set-ItemProperty -Name '(Default)' -Value $command
}
于 2019-09-23T14:32:33.480 回答