我对 Batch 有相当多的了解。我正在尝试将批处理脚本移植到 Mac/UNIX,但我的批处理文件具有拖放功能。经过无数次谷歌搜索,我一无所获。他们都说您可以拖放到终端窗口中 - 不适合不需要输入的脚本。
这是我的 Batch 代码:
cd %USERPROFILE%
7za x %* -o%USERPROFILE%\Desktop\Temp
7za a %1 %USERPROFILE%\Desktop\Temp\*
cd %USERPROFILE%\Desktop
rmdir /q /s Temp\
不是特别担心 7za 命令(因为存档实用程序)、cd
%USERPROFILE%
(因为终端在用户的配置文件中启动)、rmdir
、cd
等,因为它们只是基本文件命令。但我不知道引用使用 .sh 脚本删除/打开的文件的代码。
所以,如果有人知道该代码,请告诉我。我知道这是一件简单的事情,但你不可能知道每个命令,尤其是在处理不熟悉的编程语言时。
我不知道有什么方法可以让原始脚本接受拖放文件,但是有很多选项可以将其包装在接受拖放的其他内容中,并将文件传递给脚本。 IMO 最快的选择是将脚本包装在 Automator 应用程序中。运行 /Applications/Automator.app,选择应用程序作为新项目的类型,将“运行 Shell 脚本”操作从操作列表(第二列)拖到工作流程(右列)中,将其“传递输入”设置为“作为参数”,粘贴到 shell 脚本中,然后保存应用程序。完成。
用于包装 shell 脚本的其他选项包括:AppleScript、Platypus 和 DropScript。
我迟到了,甚至没有找到您拖放问题的答案。但我注意到这看起来像是 Windows
cmd.exe
的批处理脚本,在任何 Unix shell 中根本无法工作。所以你真的需要先为 Bash 完全重写它!
%USERPROFILE%
变量在 Unix 中将是 $HOME
。rmdir
仅删除空目录。请参阅 man rmdir
和 man rm
以及 -f -r
选项,了解与 rmdir /q /s Temp
Windows 命令等效的命令。但是要注意,一旦你学会了一些 Bash,你就会开始真正讨厌那种可怕的
cmd.exe
:-)
对于 Windows,您可以在桌面上创建快捷方式。拖到快捷方式上的文件将传递到快捷方式中的命令行。
此示例使用 PowerShell 脚本,但您也可以使用 CMD.EXE 作为批处理文件。键入 cmd /h 以获取在 CMD shell 中启动程序的选项。
PowerShell 示例。该行(带引号)位于快捷方式中:
“C:\Program Files\PowerShell \pwsh.exe”-文件“C: in\myps-script.ps1”
注意:PowerShell 脚本在 Windows 中不被识别为可执行文件,因此这个“技巧”对于 .ps1 文件可点击是必要的。
在 MacOS 中,您可以在 Automator 中执行类似的操作,但脚本无法交互,因为没有打开终端窗口。我仍在寻找 MacOS 中交互式脚本的拖放解决方案。