我有这个使用 rar 的 bash 命令
for folder in */; do rar a -m0 -r "${folder%/}.rar" "$folder"; done
我理解https://stackoverflow.com/questions/25299584/create-a-rar-archive-for-each-subdirectory-in-a-directory-centos-ubuntu 它会为目录的每个子目录创建一个 rar 存档。但该链接涵盖了 ubuntu。我想知道如何在 Windows 中运行它。
我知道 Gnuwin32 充满了旧版本的程序,甚至没有 rar。
Cygwin 较新,但其软件包列表中不包含 rar.exe。
如果我尝试在 cygwin 中执行 $rar,那么它会说
rar: command not found
我能做些什么?
答案1
有两种方法可以做到这一点。一种方法是从 cmd.exe 运行 rar.exe,无需 cygwin。但您需要调整命令以使用批处理而不是 bash 运行。
另一种方法是从 cygwin 运行 rar.exe。然后您可以直接使用 bash 命令。我们将尝试这种方法
您可以从 cygwin 内部运行外部可执行文件。
你可以很容易地获得 windows 的 rar 命令,它最终会C:\Program Files\WinRAR\Rar.exe
从 rarlab.com/download.htm 安装 winrar,其中提到 rarlab.com/rar/winrar-x64-602.exe
然后你必须知道如何将目录添加到 shell 的路径变量中,这样你就可以从任何目录运行 rar.exe(在你的情况下,由于使用 cygwin,这将是将目录添加到路径变量的 bash 方式)
如果你看一下,C:\ProgramData\Microsoft\Windows\Start Menu\Programs\WinRAR
你会发现里面有如何使用命令行 rar.exe 的手册
$ /cygdrive/c/Program\ Files/WinRAR/Rar.exe | head -n 7
RAR 6.02 x64 Copyright (c) 1993-2021 Alexander Roshal 11 Jun 2021
Trial version Type 'rar -?' for help
Usage: rar <command> -<switch 1> -<switch N> <archive> <files...>
<@listfiles...> <path_to_extract\>
user@hp-probook1 ~
$ PATH=$PATH:/cygdrive/c/Program\ Files/WinRAR
user@hp-probook1 ~
$ /cygdrive/c/Program\ Files/WinRAR/Rar.exe | head -n 7
RAR 6.02 x64 Copyright (c) 1993-2021 Alexander Roshal 11 Jun 2021
Trial version Type 'rar -?' for help
Usage: rar <command> -<switch 1> -<switch N> <archive> <files...>
<@listfiles...> <path_to_extract\>
user@hp-probook1 ~
$ rar | head -n 7
RAR 6.02 x64 Copyright (c) 1993-2021 Alexander Roshal 11 Jun 2021
Trial version Type 'rar -?' for help
Usage: rar <command> -<switch 1> -<switch N> <archive> <files...>
<@listfiles...> <path_to_extract\>
user@hp-probook1 ~
$
现在您看到 rar 已在运行。
现在你的命令将像这里一样运行
user@hppro ~
$ ls -l
total 3
drwxr-xr-x+ 1 user None 0 Aug 2 03:17 abcd_dir
drwxr-xr-x+ 1 user None 0 Aug 2 03:18 defgh_dir
-rwx------ 1 user None 86 Dec 24 2020 blahfile
user@hppro ~
$ for folder in */; do echo rar a -m0 -r "${folder%/}.rar" "$folder"; done
rar a -m0 -r abcd_dir.rar abcd_dir/
rar a -m0 -r defgh_dir.rar defgh_dir/
user@hppro ~
$
并按照用户所示,删除了回显。并设置了 cygwin bash 的路径,并安装了 winrar 包括命令行 rar.exe,然后运行该命令。