
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
これを行うには 2 つの方法があります。1 つは、cygwin を使用せずに cmd.exe から rar.exe を実行することです。ただし、その場合は、bash ではなくバッチで実行するようにコマンドを調整する必要があります。
もう一つの方法は、cygwinからrar.exeを実行することです。その後、bashコマンドを直接使用できます。その方法を試してみましょう。
cygwin 内から外部実行ファイルを実行できます。
Windows用のrarコマンドは簡単に入手でき、C:\Program Files\WinRAR\Rar.exe
rarlab.com/rar/winrar-x64-602.exe が記載されている rarlab.com/download.htm から winrar をインストールします。
次に、ディレクトリをシェルのパス変数に追加する方法を知っておく必要があります。そうすれば、任意のディレクトリから 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 のパスを設定し、コマンドライン rar.exe を含む winrar をインストールしてから、コマンドを実行しました。