如何在 Windows 中运行使用 rar/winrar 命令行的 bash 命令?

如何在 Windows 中运行使用 rar/winrar 命令行的 bash 命令?

我有这个使用 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 已在运行。

现在你的命令将像这里一样运行

https://stackoverflow.com/questions/25299584/create-a-rar-archive-for-each-subdirectory-in-a-directory-centos-ubuntu

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,然后运行该命令。

在此处输入图片描述

相关内容