Posso criar um arquivo em lote para criar subpastas e talvez renomear subpastas existentes?

Posso criar um arquivo em lote para criar subpastas e talvez renomear subpastas existentes?

Tenho conhecimento muito limitado ou algum conhecimento de codificação. Portanto, não tenho certeza se isso pode ser feito criando um arquivo em lote.

Estou no Windows 10, aliás.

Eu tenho um grande banco de dados de pastas de 'clientes'. Talvez esta seja a pasta pai, caso contrário. Existem subpastas para cada letra do alfabeto, que é a primeira letra de cada nome de cliente. Então iria

C:Cliente/A/Adams, Bill

C:Cliente/A/Anderson, Jill

C:Cliente/B/Borgonha, Jack

..e assim por diante. Existem milhares de clientes.

Em cada pasta de cliente específica (adams, bill, etc.), preciso criar uma subpasta chamada ID & PFP

Existe algum lote que posso criar para percorrer automaticamente todas as subpastas com letras e as subpastas de cliente subsequentes dentro delas e criar as subpastas 'ID e PFP' dentro de cada nome de cliente?

Além disso, algumas dessas subpastas já possuem uma pasta chamada 'ID'. Existe um código que poderia dizer criar essas subpastas dentro das pastas de nomes do cliente - se não houver uma pasta chamada 'ID'. Se houver uma pasta chamada 'ID', renomeie-a para 'ID & PFP'?

Muito gentil cumprimentos

Responder1

O lote a seguir é o que você precisa.
editar: adicionado caso "ID" da subpasta

@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 isso em um arquivo em lote e coloque-o na pasta pai onde você tem a pasta a,b,c etc....

Basicamente, este script irá para cada subpasta em que está e, em seguida, irá para cada subpasta seguinte para criar uma pasta.

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

Responder2

Bem, o código a seguir fará tudo o que você pediu, fique à vontade para copiá-lo dentro de algum editor ".txt" e salvá-lo com a extensão ".bat" (por exemplo: "dirHelper.bat").

Não se esqueça de alterar uma segunda linha de "CD C:\raiz"para algo que corresponda ao seu caso -"CD C:\Cliente" e sinta-se à vontade para abandonar as instruções "echo", que as adicionei apenas para ajudá-lo a entender o que está acontecendo enquanto você está testando ou para fins de registro na execução

@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

informação relacionada