Este arquivo em lote pode ser melhorado para incluir subpastas?

2

Eu tenho essas linhas em um arquivo .bat:

@echo off
pushd %*
for %%j in (*) do type nul > "%%j"
popd

Se eu o executar, ele alterará todos os tamanhos do arquivo para 0, incluindo o arquivo em lote. Se eu usá-lo no CMD, posso especificar o nome das pastas para alterar como: makeitzero.bat FOLDER_NAME

Mas eu sei apenas um pouco sobre programação, então eu me pergunto se eu poderia incluir sub-pastas também (se eu executá-lo ou da linha de comando)?

Obrigado!


Nota: Eu sou um novo usuário neste site, e não tenho certeza de como usá-lo corretamente, por isso, se eu cometer um erro (título errado, tags ruins, informações irrelevantes, etc.) eu ficaria feliz em ouvi-lo e fazê-lo melhor da próxima vez.


Editar 1 : for /r fez o truque. Isso funciona como um encanto:

@echo off
for /r "D:\DeleteInThis" %%a in (.) do (
    pushd %%a
    pushd %*
    for %%j in (*) do type nul > "%%j"
    popd
    )

Obrigado!

    
por deviance 01.08.2018 / 15:35

1 resposta

2

FOR tem vários parâmetros de modo para que o comando funcione de várias maneiras. Você deve verificar FOR /F , que permite percorrer a saída de um comando. Use o comando DIR para listar arquivos e diretórios em todos os subdiretórios. Use a opção /S para incluir todos os subdiretórios e /B para ter uma saída simples (apenas o nome completo do caminho dos arquivos e pastas).

dir /s /b ".\*"

Para combinar a saída de DIR com o loop, modifique seu comando FOR para algo como isto:

for /f "tokens=*" %%j in ('dir /s /b ".\*"') do type nul > "%%j"
    
por 01.08.2018 / 20:01