Как создать дубликат каталога в родительском каталоге, а затем переименовать файл в родительское имя в Windows

Как создать дубликат каталога в родительском каталоге, а затем переименовать файл в родительское имя в Windows

Я пытаюсь преобразовать собранный вместе скрипт Linux в командную строку Windows. Итак, ниже представлен мой скрипт, не слишком изящный, но каким-то образом он работает.

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 

РЕДАКТИРОВАТЬ:

[Добавляю эту часть, чтобы объяснить, чего я пытаюсь добиться. Цель этого скрипта — заархивировать все файлы в папке. EX c:\boomer\egret это создает boomer.rar Новая папка создается с именем "rar - egret" C:\boomer\egret\rar - egret boomer.rar копируется в "rar - egret" и удаляется изменение каталога на "rar - egret" переименование boomer.rar в "boomer - ahs7Ahxei2imah4tubiqu1eY2i.rar" затем вся папка "rar-egret" будет перемещена в место хранения позже.]

Я не могу понять, как сделать "${PWD##*/}". Мне нужна помощь с этой частью. Нужно получить только имя каталога, а не путь.

Я не кодер ни в коем случае. Это все собрано из шагов исследования на форумах, подобных этому. Я невежественен и не понимаю код, который использовал. Извините, но иногда обезьяна нажимает нужные клавиши.

Меня попросили члены моего круга сделать это на Windows. Я работаю над наименьшим общим знаменателем, поэтому пакетные файлы. WSL не устанавливается, только ванильная Windows.

Если это слишком сложно, я согласен. Если нужно больше информации, я предоставлю столько, сколько потребуется, но я не знаю, пока мне не скажут.

решение1

Мы не должны писать код за вас.

Далее следуют советы о том, как это написать. Надеюсь, вы сможете их воспринять.

Первую команду (mkdir) можно выполнить только с помощью небольшой программы, поэтому я включаю ее сюда, остальное будет предложениями о том, как написать ее самостоятельно, надеюсь, это имеет смысл.

Хорошо, насколько я могу судить, нет переменной, назначенной имени непосредственной родительской папки, но это все равно можно сделать. Первую строку придется заменить на это:

call :Makedir

затем добавьте эту процедуру в конец вашего скрипта:

: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

...который создаст ваш каталог для вас. Остальное вам придется написать самостоятельно, но вот как к этому подойти:

В следующей строке cpбудет заменено на copyи, возможно, вставлено "/y", поэтому попробуйте copy /yвместо 'cp'. Из командной строки попробуйте copy /?для получения подробностей.

В следующей строке rmбудет заменено на del /yи, возможно, вставлен "/f", поэтому попробуйте del /y /fвместо rm. Из командной строки попробуйте del /?для получения подробной информации.

Вам все еще нужно переместить файл в место назначения, эквивалентом 'mv' является просто move( для получения подробной информации), а для генерации случайного символа используйте %rnd%. В CMD эквивалента move /?нет .pwgen

Надеюсь, этого достаточно, чтобы вы во всем разобрались. Это можно сделать, но мне не разрешено все это за вас расписывать.

Связанный контент