
Ich habe diesen Bash-Befehl, der rar verwendet
for folder in */; do rar a -m0 -r "${folder%/}.rar" "$folder"; done
Ich verstehe vonhttps://stackoverflow.com/questions/25299584/create-a-rar-archive-for-each-subdirectory-in-a-directory-centos-ubuntu dass es ein RAR-Archiv von jedem Unterverzeichnis eines Verzeichnisses erstellt. Aber dieser Link bezieht sich auf Ubuntu. Ich frage mich, wie ich das unter Windows ausführen würde.
Ich verstehe, dass Gnuwin32 voller alter Programmversionen ist und sowieso nicht einmal über rar verfügt.
Cygwin ist neuer, enthält aber rar.exe nicht in seiner Paketliste.
Wenn ich versuche, $rar in Cygwin auszuführen, heißt es
rar: command not found
Was kann ich machen?
Antwort1
Dies können Sie auf zwei Arten tun. Eine Möglichkeit besteht darin, rar.exe von cmd.exe aus ohne Cygwin auszuführen. Dann müssen Sie Ihren Befehl jedoch so anpassen, dass er mit Batch und nicht mit Bash ausgeführt wird.
Die andere Möglichkeit besteht darin, rar.exe von Cygwin aus auszuführen. Dann können Sie Ihren Bash-Befehl direkt verwenden. Wir werden diesen Weg versuchen
Sie können externe ausführbare Dateien innerhalb von Cygwin ausführen.
Sie können den rar-Befehl für Windows ganz einfach erhalten und er endet inC:\Program Files\WinRAR\Rar.exe
Installieren Sie WinRar von rarlab.com/download.htm, wo rarlab.com/rar/winrar-x64-602.exe erwähnt wird.
Dann müssen Sie wissen, wie Sie ein Verzeichnis zur Pfadvariablen einer Shell hinzufügen, damit Sie rar.exe von jedem beliebigen Verzeichnis aus ausführen können (und in Ihrem Fall, da Sie Cygwin verwenden, wäre das die Bash-Methode zum Hinzufügen eines Verzeichnisses zur Pfadvariablen).
Und wenn Sie nachschauen, C:\ProgramData\Microsoft\Windows\Start Menu\Programs\WinRAR
finden Sie ein Handbuch zur Verwendung der Befehlszeile 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 ~
$
Sie sehen also, dass rar jetzt bei Ihnen läuft.
Und jetzt läuft Ihr Befehl genauso gut wie hier
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 ~
$
Und wie der Benutzer gezeigt hat, nachdem er das Echo entfernt und den Cygwin-Bash-Pfad eingerichtet und WinRar einschließlich der Befehlszeile rar.exe installiert und dann den Befehl ausgeführt hat.