No entanto, isso cria a pasta testFolder em todas as pastas recém-criadas
Isso ocorre porque o comando for /r
está atualizando a lista de arquivos a serem processados toda vez que você cria um novo diretório, portanto, é realmente útil apenas se você quiser visitar uma lista fixa de diretórios.
Aqui está um arquivo de lote (test.cmd) que fará o que você deseja. Coloque-o no diretório Grandparent
.
test.cmd:
@echo off
setlocal
for /f "usebackq tokens=*" %%a in ('dir /b /a:d') do (
rem enter the directory
pushd %%a
echo In Directory: %%a
md child
rem leave the directory
popd
)
endlocal
Notas:
-
dir /b /a:d
é avaliado uma vez, então a lista de diretórios é fixada -
for /f
passará por essa lista fixa exatamente uma vez.
Exemplo de saída:
> test
In Directory: Documentation
In Directory: subdir
In Directory: test
In Directory: test with space
In Directory: test1
> dir /b /a:d /s child
F:\test\Documentation\child
F:\test\subdir\child
F:\test\test\child
F:\test\test with space\child
F:\test\test1\child
Leitura Adicional
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- dir - Exibe uma lista de arquivos e subpastas.
- para / f - Comando Loop contra os resultados de outro comando.
- md - Criar diretório - Cria uma nova pasta.
- pushd - Altere o diretório / pasta atual e armazene a pasta / caminho anterior para uso pelo comando POPD.
- popd - Altere o diretório de volta para o caminho / pasta armazenado mais recentemente pelo comando PUSHD.