【问题标题】:Dragging and Dropping a File onto a .sh file将文件拖放到 .sh 文件中
【发布时间】:2013-04-21 21:26:56
【问题描述】:

我对 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%(因为终端在用户的配置文件中启动),rmdircd 等,因为它们只是基本的文件命令。但我不知道引用使用 .sh 脚本删除/打开的文件的代码。

所以,如果有人知道该代码,请告诉我。我知道这是一件简单的事情,但你不可能知道每个命令,尤其是在处理不熟悉的编程语言时。

【问题讨论】:

    标签: bash macos batch-file terminal drag-and-drop


    【解决方案1】:

    我不知道让原始脚本接受拖放文件的方法,但是有许多选项可以将其包装在其他接受拖放的东西中,并将文件传递给一个脚本。 IMO 最快的选择是将脚本包装在 Automator 应用程序中。运行 /Applications/Automator.app,选择 Application 作为新项目的类型,将“运行 Shell 脚本”操作从操作列表(第二列)拖到工作流(右列)中,将其“传递输入”设置为“作为参数”,粘贴到 shell 脚本中,然后保存应用程序。完成。

    用于封装 shell 脚本的其他选项包括:AppleScriptPlatypusDropScript

    【讨论】:

    • 我测试了直接拖放到 .sh 文件上(在你回答这个问题之前),但它似乎不起作用。更不用说我必须让 .sh 在终端而不是 TextEdit 中自动打开,用户必须事先这样做。是否可以改为使用 .command 文件?
    • 我还没有找到方法,但如果有的话我想知道。
    【解决方案2】:

    我迟到了,甚至不知道你的拖放问题的答案。但我注意到这看起来像是 Windows 的 cmd.exe 的批处理脚本,它在任何 Unix shell 中都不起作用。所以你真的需要先为 Bash 完全重写它!

    • “\”是 Unix 中的转义字符。路径分隔符是“/”。
    • Shell 变量以“$”开头,而不是“%”。在 Unix 中,Windows %USERPROFILE% 变量将是 $HOME
    • 选项以“-”开头,而不是“/”。
    • rmdir 只删除空目录。请参阅 man rmdirman rm 以及 -f -r 选项,以获得与您的 rmdir /q /s Temp Windows 命令等效的选项。

    但是要注意,一旦你学会了一些 Bash,你就会开始真正讨厌那个可怕的 cmd.exe :-)

    【讨论】:

      猜你喜欢
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 2022-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      相关资源
      最近更新 更多