![Cómo crear un directorio duplicado bajo el nivel principal y luego cambiar el nombre de un archivo principal en Windows](https://rvso.com/image/1605149/C%C3%B3mo%20crear%20un%20directorio%20duplicado%20bajo%20el%20nivel%20principal%20y%20luego%20cambiar%20el%20nombre%20de%20un%20archivo%20principal%20en%20Windows.png)
Estoy intentando convertir un script de Linux integrado a la línea de comandos de Windows. Entonces, a continuación está mi guión, no es elegante pero de alguna manera 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:
[Agregando esta parte para explicar lo que estoy tratando de lograr. El propósito de este script es rar todos los archivos en una carpeta. EX c:\boomer\egret esto crea boomer.rar Se crea una nueva carpeta llamada "rar - egret" C:\boomer\egret\rar - egret boomer.rar se copia a "rar - egret" y se elimina, cambia el directorio a " rar - egret" cambia el nombre de boomer.rar a "boomer - ahs7Ahxei2imah4tubiqu1eY2i.rar" y luego toda la carpeta "rar-egret" se moverá a una ubicación de almacenamiento.]
No puedo entender cómo hacer "${PWD##*/}". Necesito ayuda con esta parte. Solo obtengo el nombre del directorio, no también la ruta.
No soy un codificador de ninguna manera. Todo esto se logra a partir de la investigación de pasos en foros como este. No tengo ni idea y no entiendo el código que utilicé. Lo siento, pero a veces el mono acierta las teclas correctas.
Miembros de mi círculo me pidieron que hiciera que esto funcionara en Windows. Estoy trabajando con el mínimo común denominador aquí, así que archivos por lotes. No se está instalando WSL, solo Windows básico.
Si es demasiado difícil, estoy de acuerdo con eso. Si se necesita más información, proporcionaré toda la necesaria, pero no lo sé hasta que me lo digan.
Respuesta1
Se supone que no debemos escribir el código por usted.
Lo que sigue son consejos sobre cómo escribirlo, espero que puedas seguirlos.
El primer comando (mkdir) sólo se puede ejecutar con un programa pequeño, así que lo incluyo aquí; el resto serán sugerencias sobre cómo escribirlo usted mismo, espero que tenga sentido.
Bien, hasta donde yo sé, no hay ninguna variable asignada al nombre de la carpeta principal inmediata, pero aún se puede hacer. Su primera línea deberá ser reemplazada por esto:
call :Makedir
luego agregue esta rutina al final de su 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
...eso creará su directorio por usted. El resto tendrás que escribirlo tú mismo, pero aquí te explicamos cómo abordarlo:
En la siguiente línea cp
se reemplazará con copy
"/y" y tal vez se agregue "/y", así que intente copy /y
en lugar de "cp". Desde una línea de comando intente copy /?
obtener más detalles.
En la siguiente línea rm
se reemplazaría con del /y
"/f" y tal vez se agregaría "/f", así que intente del /y /f
en lugar de rm
. Desde una línea de comando intente del /?
obtener más detalles.
Aún necesita mover el archivo al destino; el equivalente a 'mv' es simplemente move
( move /?
para más detalles) y para generar un carácter aleatorio use %rnd%. No existe pwgen
un equivalente en CMD.
Espero que sea suficiente para que lo resuelvas todo. Se puede hacer, pero no se me permite escribirlo todo.