Adicionando uma subpasta a múltiplos diretórios onde o nome dos diretórios contém pontuação

1

Eu gostaria de criar o mesmo subdiretório em cada diretório de uma pasta. Eu encontrei a resposta aqui:

Adicione uma nova pasta a cada subpasta

O prompt de comando era:

FOR /d %A IN (e:\donuts\*) DO mkdir "%A\big"

Mas talvez porque os nomes dos meus diretórios contenham espaços e vírgulas, acabo com vários diretórios baseados na primeira palavra em cada um dos diretórios existentes e vários erros no prompt de comando.

Que variação posso usar para permitir que meus diretórios tenham vírgulas e espaços nos nomes?

    
por Anthony 18.11.2016 / 18:14

1 resposta

0

Você pode usar o PowerShell!

Execute este comando do PowerShell quando estiver na pasta cujas subpastas devem ter as novas pastas adicionadas a eles:

dir | ? {$_.PSIsContainer} | % {md ($_.FullName + '\New folder')}

Isso lista as entradas na pasta atual (com dir , um alias para Get-ChildItem ), depois as filtra ( ? ) para as que são pastas. Para cada pasta encontrada, uma nova pasta é criada ( md ) com o caminho completo como o caminho da subpasta encontrada mais uma string constante, nesse caso \New folder , mas você pode definir isso como quiser, incluindo as coisas que tem espaços e vírgulas.

No PowerShell 3 e superior, pode-se condensar isso:

dir -Directory | % {md ($_.FullName + '\New folder')}

Aqui, dir recebe um sinalizador -Directory opcional para obter apenas pastas.

Para chamar este comando de um script em lote:

powershell -Command "dir | ? {$_.PSIsContainer} | % {md ($_.FullName + '\New folder')}"
    
por 18.11.2016 / 18:24