![Como criar um diretório duplicado no pai e renomear um arquivo com o nome pai no Windows](https://rvso.com/image/1605149/Como%20criar%20um%20diret%C3%B3rio%20duplicado%20no%20pai%20e%20renomear%20um%20arquivo%20com%20o%20nome%20pai%20no%20Windows.png)
Estou tentando converter um script Linux agrupado para a linha de comando do Windows. então, abaixo está o meu script, não elegante, mas de alguma forma funciona.
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
EDITAR:
[Adicionando esta parte para explicar o que estou tentando realizar. O objetivo deste script é fazer o rar de todos os arquivos de uma pasta. EX c:\boomer\egret isso cria boomer.rar Uma nova pasta é criada chamada "rar - egret" C:\boomer\egret\rar - egret boomer.rar é copiado para "rar - egret" e excluído altera o diretório para " rar - egret" renomeia boomer.rar para "boomer - ahs7Ahxei2imah4tubiqu1eY2i.rar" então toda a pasta "raregret" será movida para um local de armazenamento posteriormente.]
Não consigo descobrir como fazer "${PWD##*/}". Preciso de ajuda com esta parte. Apenas obtendo apenas o nome do diretório, não o caminho também.
Eu não sou um programador de forma alguma. Tudo isso é reunido a partir da pesquisa de etapas em fóruns como este. Não tenho noção e não entendo o código que usei. Sinto muito, mas às vezes o macaco bate nas teclas certas.
Membros do meu círculo me pediram para fazer isso funcionar no Windows. Estou trabalhando com o menor denominador comum aqui, ou seja, arquivos em lote. Nenhum WSL sendo instalado, apenas o Vanilla Windows.
Se for muito difícil, estou bem com isso. Se forem necessárias mais informações, fornecerei o que for necessário, mas não sei até que seja informado.
Responder1
Não devemos escrever o código para você.
o que se segue são dicas de como escrevê-lo, espero que você possa acompanhar.
O primeiro comando (mkdir) só pode ser realizado com um programa pequeno, então estou incluindo-o aqui, o resto serão sugestões de como escrevê-lo você mesmo, espero que faça sentido.
OK, pelo que sei, não há nenhuma variável atribuída ao nome da pasta pai imediata, mas isso ainda pode ser feito. Sua primeira linha terá que ser substituída por esta:
call :Makedir
em seguida, adicione esta rotina ao final do seu script:
: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
... isso criará seu diretório para você. O resto você mesmo terá que escrever, mas aqui está como abordar:
Na sua próxima linha cp
seria substituído copy
e talvez inserido um "/y", então tente copy /y
no lugar de 'cp'. Em uma linha de comando, tente copy /?
obter detalhes.
Na próxima linha rm
seria substituído por del /y
e talvez acrescentasse um "/f", então tente del /y /f
no lugar de rm
. Em uma linha de comando, tente del /?
obter detalhes.
Você ainda precisa mover o arquivo para o destino, o equivalente a 'mv' é simplesmente move
( move /?
para detalhes) e para gerar um caractere aleatório use% rnd%. Não há pwgen
equivalente no CMD.
Espero que isso seja o suficiente para você descobrir tudo. Isso pode ser feito, mas não tenho permissão para escrever tudo para você.