
Tengo este comando bash que usa rar
for folder in */; do rar a -m0 -r "${folder%/}.rar" "$folder"; done
lo entiendo dehttps://stackoverflow.com/questions/25299584/create-a-rar-archive-for-each-subdirectory-in-a-directory-centos-ubuntu que crea un archivo rar de cada subdirectorio de un directorio. Pero ese enlace cubre ubuntu. Me pregunto cómo ejecutaría eso en Windows.
Entiendo que Gnuwin32 está lleno de versiones antiguas de programas y de todos modos ni siquiera tiene rar.
Cygwin es más nuevo pero no incluye rar.exe en su lista de paquetes.
Si intento incluso hacer $rar en cygwin, entonces dice
rar: command not found
¿Qué puedo hacer?
Respuesta1
Hay dos formas de hacer esto... una forma es ejecutar rar.exe desde cmd.exe sin cygwin. Pero entonces necesitarías ajustar tu comando para ejecutarlo por lotes en lugar de bash.
La otra forma es ejecutar rar.exe desde cygwin. Entonces puedes usar tu comando bash directamente. Probaremos esa ruta.
Puede ejecutar ejecutables externos desde cygwin.
puedes obtener el comando rar para Windows con bastante facilidad y termina enC:\Program Files\WinRAR\Rar.exe
Instale winrar desde rarlab.com/download.htm que menciona rarlab.com/rar/winrar-x64-602.exe
Luego, debe saber cómo agregar un directorio a la variable de ruta del shell, para poder ejecutar rar.exe desde cualquier directorio (y en su caso, desde que usa cygwin, esa sería la forma bash de agregar un directorio a la variable de ruta). )
Y si miras, C:\ProgramData\Microsoft\Windows\Start Menu\Programs\WinRAR
tendrá un manual sobre cómo usar la línea de comando 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 ~
$
Como ves, ahora tienes rar ejecutándose.
Y ahora su comando se ejecutará tan bien como aquí.
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 ~
$
Y como demostró el usuario, habiendo eliminado el eco. Y configuró la ruta de cygwin bash, instaló winrar, incluida la línea de comando rar.exe y luego ejecutó el comando.