【问题标题】:batch unrar on OS X在 OS X 上批量解压缩
【发布时间】:2016-05-15 00:31:57
【问题描述】:

这是我添加到 Automator 工作流程中的 shell 脚本

export VAR=$@
export DIR=${VAR%/*}
/usr/local/bin/unrar x -y "${VAR}" "${DIR}"

输入是 Finder.app 中的文件和文件夹。我希望能够对此进行扩展并能够对此进行更改。一种是解压到 $DIR 中的子文件夹,以存档名称命名(无扩展名)。

我的主要计划是让 shell 脚本使用 unrar 命令来 -在档案中提取一个.iso -挂载.iso - 将挂载的 .iso 的内容复制到 $DIR -(hdiutil 弹出?).iso -delete $VAR(档案)

我是shell语言的初学者,不懂花括号等。

【问题讨论】:

  • 如果我可以一次选择多个 .rar 文件作为我的输入,或者如果我选择了一个包含所有要处理的父文件夹的父文件夹,那么我应该添加以制作这批文件.

标签: macos bash shell automator


【解决方案1】:

我认为你可以检查你得到的所有参数是否是文件夹/文件,然后将每个相关的 rar 提取到它的文件夹(在创建之后)

我会这样做(假设您使用的是 bash shell):

arguments="$@"

for i in `echo $arguments` #going over the arguments
do
    if [ -d "$i" ]; then #checks if its a directory
       folder=`echo $i | sed 's/\/$//'` #to verify that dir's name is not ending with "/"
       archives=`ls "$folder/*.rar"`

       for archive in `echo $archives` #will work also if the folder contains only one rar 
       do 
         final_dir="${folder}/${archive%.rar}"
         mkdir $final_dir
         /usr/local/bin/unrar x -y $archive $final_dir
       done

   elif [ -f "$i" ]; then # checks if it's a regular file
      final_dir="${folder}/${archive%.rar}"
      mkdir $final_dir
      /usr/local/bin/unrar x -y $archive $final_di
   else #error for if the argument is not a dir nor a regular file
      echo "$i is an invaild argument"
   fi

done 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2015-06-16
    • 2018-03-14
    • 2019-11-29
    • 1970-01-01
    相关资源
    最近更新 更多