Como eu crio várias pastas com um arquivo de lote?

1

Eu preciso criar uma pasta (chamada "visitante") em todas as pastas de uma pasta principal. Por exemplo, minha estrutura é esta:

\idontknowthename1\
\idontknowthename2\
\idontknowthename3\
\idontknowthename4\
\idontknowthename5\

Eu preciso disso:

\idontknowthename1\visitor
\idontknowthename2\visitor
\idontknowthename3\visitor
\idontknowthename4\visitor
\idontknowthename5\visitor

Claro, existem alguns problemas:

  1. Eu não sei o número total de pastas na pasta raiz
  2. Eu não sei o nome real de cada pasta
  3. Eu não posso usar nenhum software ou instalar nada mais que vem com o Windows XP (é para um servidor web em teste e produção)

Eu estava pensando em fazer isso com um arquivo em lote (usando for ), mas não consigo descobrir como obter os nomes das pastas sem analisar um arquivo. Alguma idéia?

    
por Leandro Tupone 05.12.2011 / 23:50

3 respostas

1

Listar todas as pastas em um arquivo:

dir /ad /b /s > dirlist.txt

Para cada diretório, execute mkdir :

for /f "tokens=*" %%a in (dirlist.txt) do mkdir "%%~a\visitor"

Excluir arquivo temporário:

del dirlist.txt

(É possível usar dir... diretamente dentro do loop for , mas há um risco de recursão sem fim.)

    
por 05.12.2011 / 23:59
2

Isso parece funcionar com nomes de pastas que possuem espaços.

@echo off

set root_folder=%USERPROFILE%\Desktop\test

for /f "tokens=*" %%a in ('dir "%root_folder%" /ad /b') do @if not exist "%%~fa\visitor" md "%%~fa\visitor"

set root_folder=

Você também pode criar pastas de visitantes em subpastas adicionando /s ao comando DIR , que é dir "%root_folder%" /ad /b /s . Isso não parece sofrer nenhum problema com recursão.

    
por 06.12.2011 / 00:02
0

for tem um parâmetro /d que listará os diretórios em vez dos arquivos.

for /d %%i in (C:\Path\To\Root\*) do @md "%%i\visitor" deve fazer o truque

    
por 07.12.2011 / 16:41