将文件拖放到.sh文件中

时间:2013-04-27 23:19:25

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

我对Batch有相当多的知识。我正在尝试将批处理脚本移植到Mac / UNIX,但我的批处理文件有一个拖放的东西。通过无数的谷歌搜索,我什么也没想到。他们都说你可以拖放到终端窗口 - 不适合没有输入的脚本。

以下是Batch I的代码:

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

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

2 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:0)

我迟到了,甚至连您的拖放问题都没有答案。但是我注意到这看起来像Windows的cmd.exe的批处理脚本,在任何Unix Shell中都根本不起作用。因此,您真的需要先完全为Bash重写它!

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

但是请注意,一旦您学习了一些Bash,您将开始真正讨厌那种可怕的cmd.exe:-)