将文件拖放到 .sh 文件上

问题描述 投票:0回答:3

我对 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 脚本删除/打开的文件的代码。

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

bash macos batch-file terminal drag-and-drop
3个回答
19
投票

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

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


1
投票

我迟到了,甚至没有找到您拖放问题的答案。但我注意到这看起来像是 Windows

cmd.exe
的批处理脚本,在任何 Unix shell 中根本无法工作。所以你真的需要先为 Bash 完全重写它!

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

但是要注意,一旦你学会了一些 Bash,你就会开始真正讨厌那种可怕的

cmd.exe
:-)


0
投票

对于 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 中交互式脚本的拖放解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.