
У меня есть эта команда bash, которая использует rar
for folder in */; do rar a -m0 -r "${folder%/}.rar" "$folder"; done
Я понимаю изhttps://stackoverflow.com/questions/25299584/создать-архив-rar-для-каждого-подкаталога-в-каталоге-centos-ubuntu что он создает rar-архив каждого подкаталога каталога. Но эта ссылка касается ubuntu. Интересно, как бы я запустил это в Windows.
Я понимаю, что Gnuwin32 полон старых версий программ и в нем даже нет rar.
Cygwin более новая версия, но в ее список пакетов не входит rar.exe.
Если я попробую даже выполнить $rar в cygwin, то он скажет:
rar: command not found
Что я могу сделать?
решение1
Есть два способа сделать это.. один из них — запустить rar.exe из cmd.exe без cygwin. Но тогда вам нужно будет настроить команду для запуска с помощью batch, а не bash.
Другой способ — запустить rar.exe из cygwin. Затем вы можете использовать команду bash напрямую. Мы попробуем этот путь
Вы можете запускать внешние исполняемые файлы из cygwin.
вы можете получить команду rar для windows довольно легко и она заканчивается вC:\Program Files\WinRAR\Rar.exe
Установите winrar с rarlab.com/download.htm, где упоминается rarlab.com/rar/winrar-x64-602.exe
Затем вам нужно знать, как добавить каталог в переменную path оболочки, чтобы вы могли запустить rar.exe из любого каталога (и в вашем случае, поскольку вы используете cygwin, это был бы способ bash добавить каталог в переменную path)
И если вы посмотрите, 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 и затем запустив команду.