¿Puedo crear un archivo por lotes para crear subcarpetas y tal vez cambiar el nombre de las subcarpetas existentes?

¿Puedo crear un archivo por lotes para crear subcarpetas y tal vez cambiar el nombre de las subcarpetas existentes?

Tengo conocimientos muy limitados o nulos sobre codificación. Así que no estoy seguro de si esto se puede hacer mediante la creación de un archivo por lotes.

Estoy en Windows 10 por cierto.

Tengo una gran base de datos de carpetas de 'clientes'. Quizás esta sería la carpeta principal, si no. Hay subcarpetas dentro para cada letra del alfabeto, que es la primera letra de cada nombre de cliente. así iría

C: Cliente/A/Adams, Bill

C:Cliente/A/Anderson, Jill

C:Cliente/B/Borgoña, Jack

..etcétera. Hay miles de clientes.

En todas y cada una de las carpetas de clientes específicas (adams, bill, etc.), necesito crear una subcarpeta llamada ID y PFP.

¿Hay algún lote que pueda crear para revisar automáticamente todas las subcarpetas con letras y las subcarpetas de cliente posteriores dentro de ellas y crear las subcarpetas 'ID y PFP' dentro de cada nombre de cliente?

Además, algunas de dichas subcarpetas ya tienen una carpeta llamada 'ID'. ¿Existe algún código que pueda decir crear esas subcarpetas dentro de las carpetas de nombres de clientes, si no hay una carpeta llamada 'ID'? Si hay una carpeta llamada 'ID', ¿cambiarle el nombre a 'ID y PFP'?

Saludos muy amables

Respuesta1

El siguiente lote es lo que necesita.
editar: caso agregado de subcarpeta "ID"

@echo off
setlocal
  for /f  %%b in ('dir /b /a:d') do (
      rem enter the directory
      pushd %%b
      echo In Directory: %%b

    for /f  %%c in ('dir /b /a:d') do (
      rem enter the directory
      pushd %%c
      echo In Directory: %%c

      IF EXIST ID (
        rem Folder "ID" does exist 
        echo Folder "ID" Renamed to "ID & PFP"
        rename "ID"  "ID & PFP"
        ) ELSE (
        rem Folder "ID" does not exist
        rem create folder
        md "ID & PFP"
        echo Folder: "ID & PFP" created
      )


      rem leave the directory
      popd
     )
      rem leave the directory
      popd
  )
  pause >nul
endlocal

Coloque esto en un archivo por lotes y colóquelo en la carpeta principal donde tiene la carpeta a,b,c, etc.

Básicamente, este script irá a cada subcarpeta en la que se encuentre y luego irá a cada subcarpeta siguiente para crear una carpeta.

In Directory: test
In Directory: child
Folder "ID" Renamed to "ID & PFP"
In Directory: child1
Folder: "ID & PFP" created
In Directory: child2
Folder: "ID & PFP" created
In Directory: test1
In Directory: child
Folder: "ID & PFP" created
In Directory: test2
In Directory: child
Ein Unterverzeichnis oder eine Datei mit dem Namen "ID & PFP" existiert bereits.
Folder: "ID & PFP" created

Respuesta2

Bueno, el siguiente código hará todo lo que usted solicitó, no dude en copiarlo dentro de algún editor ".txt" y guardarlo con la extensión ".bat" (por ejemplo: "dirHelper.bat").

No olvides cambiar una segunda línea de "CD C:\raíz"a algo que corresponda a tu caso -"CD C:\Cliente" y siéntase libre de deshacerse de las declaraciones de "eco". Las agregué solo para ayudarlo a comprender lo que sucede mientras realiza la prueba o para fines de registro durante la ejecución.

@Echo Off
CD C:\root 
echo entered %cd% directory
FOR /D %%G in ("*") DO (
    CD %%G 
    echo entered %cd%\%%G directory
    FOR /D %%N in ("*") DO (
        cd %%N
        echo entered %cd%\%%G\%%N directory
        if EXIST ID (
            rename ID "ID & PFP"
            echo Found ID folder inside %cd%\%%G\%%N
            echo ID folder renamed to "ID & PFP"
            CD ..\
        ) else (
            if EXIST "ID & PFP" (
                echo "ID & PFP folder already exist here:" %cd%\%%G\%%N
                CD ..\
            ) else (
                md "ID & PFP"
                echo created "ID & PFP" folder inside %cd%\%%G\%%N directory
                CD ..\

                )
        )
    )
    CD ..\
)
PAUSE

información relacionada