
Ich versuche, ein zusammengeschustertes Linux-Skript in eine Windows-Befehlszeile zu konvertieren. Unten sehen Sie also mein Skript. Es ist nicht elegant, aber irgendwie funktioniert es.
rar a -r0 boomer.rar
#combines all the files into a rar file
mkdir 'rar - '"${PWD##*/}"
#makes a new sub-dir named the same as parent with "rar - " prepended
cp boomer.rar 'rar - '"${PWD##*/}"
#copies boomer.rar to the new folder (see below*)
rm boomer.rar
#removes rar file *becuse I couldn't just get it to move in linux
cd 'rar - '"${PWD##*/}"
# move focus to new dir
for fname in *.rar
do
mv $fname 'boomer - '"$(pwgen 26 1).rar"
done
#renames files
BEARBEITEN:
[Ich füge diesen Teil hinzu, um zu erklären, was ich erreichen möchte. Der Zweck dieses Skripts besteht darin, alle Dateien in einem Ordner zu raren. Beispiel: c:\boomer\egret. Dadurch wird boomer.rar erstellt. Ein neuer Ordner mit dem Namen „rar - egret“ wird erstellt: C:\boomer\egret\rar - egret. boomer.rar wird nach „rar - egret“ kopiert und gelöscht. Ändern Sie das Verzeichnis in „rar - egret“. Boomer.rar wird in „boomer - ahs7Ahxei2imah4tubiqu1eY2i.rar“ umbenannt. Anschließend wird der gesamte Ordner „rar - egret“ später an einen anderen Speicherort verschoben.]
Ich kann nicht herausfinden, wie ich "${PWD##*/}" mache. Ich brauche bei diesem Teil Hilfe. Ich muss nur den Namen des Verzeichnisses abrufen, nicht auch den Pfad.
Ich bin in keinster Weise ein Programmierer. Das ist alles zusammengeschustert, indem ich in Foren wie diesem nach Schritten recherchiert habe. Ich habe keine Ahnung und verstehe den Code, den ich verwendet habe, nicht. Es tut mir leid, aber manchmal drückt der Affe die richtigen Tasten.
Mitglieder meines Kreises haben mich gebeten, dies unter Windows zum Laufen zu bringen. Ich arbeite hier mit dem kleinsten gemeinsamen Nenner, also Batchdateien. Es wird kein WSL installiert, nur Vanilla Windows.
Wenn es zu schwierig ist, ist das für mich in Ordnung. Wenn weitere Informationen benötigt werden, werde ich so viele bereitstellen, wie erforderlich sind, aber ich weiß es erst, wenn ich es weiß.
Antwort1
Wir sind nicht dazu verpflichtet, den Code für Sie zu schreiben.
es folgen Tipps zum Schreiben, ich hoffe, Sie können ihnen folgen.
Der erste Befehl (mkdir) kann nur mit einem kleinen Programm ausgeführt werden, deshalb füge ich ihn hier ein. Der Rest sind Vorschläge, wie Sie ihn selbst schreiben können. Ich hoffe, das ist verständlich.
OK, soweit ich das beurteilen kann, ist keiner Variable der Name des unmittelbar übergeordneten Ordners zugewiesen, aber es ist trotzdem möglich. Ihre erste Zeile muss durch Folgendes ersetzt werden:
call :Makedir
Fügen Sie dann diese Routine am Ende Ihres Skripts hinzu:
:MakeDir
set _dir=%~p0
SET _dir2=%_dir:\= %
call :FindParent %_dir2:~1,-1%
mkdir "rar - %Parent%"
goto :eof
:FindParent
if "%1"=="" goto :eof
set Parent=%1 & shift & goto :FindParent
...das erstellt Ihr Verzeichnis für Sie. Den Rest müssen Sie selbst schreiben, aber so gehen Sie vor:
In Ihrer nächsten Zeile cp
würde es durch ersetzt werden copy
und vielleicht ein „/y“ einfügen, also versuchen Sie es copy /y
anstelle von „cp“. Versuchen Sie es von einer Befehlszeile aus, copy /?
um Einzelheiten zu erfahren.
In der nächsten Zeile rm
würde durch ersetzt del /y
und möglicherweise ein „/f“ eingefügt werden, also versuchen Sie es del /y /f
anstelle von rm
. Versuchen Sie es von einer Befehlszeile aus del /?
für Details.
Sie müssen die Datei noch an das Ziel verschieben. Das Äquivalent von „mv“ ist einfach move
( move /?
für Details) und um ein zufälliges Zeichen zu generieren, verwenden Sie %rnd%. Es gibt kein pwgen
Äquivalent in CMD.
Ich hoffe, das reicht Ihnen, um alles herauszufinden. Es ist möglich, aber ich darf Ihnen nicht alles aufschreiben.