So erstellen Sie ein doppeltes Verzeichnis unter dem übergeordneten Verzeichnis und benennen dann den übergeordneten Dateinamen in Windows um

So erstellen Sie ein doppeltes Verzeichnis unter dem übergeordneten Verzeichnis und benennen dann den übergeordneten Dateinamen in Windows um

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 cpwürde es durch ersetzt werden copyund vielleicht ein „/y“ einfügen, also versuchen Sie es copy /yanstelle von „cp“. Versuchen Sie es von einer Befehlszeile aus, copy /?um Einzelheiten zu erfahren.

In der nächsten Zeile rmwürde durch ersetzt del /yund möglicherweise ein „/f“ eingefügt werden, also versuchen Sie es del /y /fanstelle 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.

verwandte Informationen