
Eu tenho várias dezenas de pastas com vários arquivos e queria saber como (ou se é possível) ecoar o conteúdo de cada pasta em um arquivo de texto usando, por exemplo,diretório > INDEX.txtcom um arquivo em lote ou na linha de comando.
Eu sei que executarFOR /D %A IN (X:\destinationFolder*.*) DO (DIR >> INDEX.TXT "%A\")me dá um arquivo de texto no diretório pai com todas as pastas listadas com seu conteúdo, mas posso criar índices individuais para cada pasta? Ou estou pedindo muito scripts em lote?
Não tenho certeza se são informações cruciais, mas estou executando o Windows 10. Qualquer ajuda será muito apreciada.
Responder1
Não tenho certeza do que você está procurando aqui, mas juntar tudo isso foi mais divertido do que trabalhar:
@echo off
set "dir=C:\Your\Top\Folder"
del /f /q "%dir%\index.txt"
if exist "%dir%" (
echo(
echo Report for:
echo %dir%
echo(
echo Subfolders:
dir /a:d /o:n /b "%dir%"
echo(
echo Files:
dir /a:-d /o:n /b "%dir%"
echo(
echo \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
)>>"%dir%\index.txt"
for /d /r "%dir%" %%A in (*) do (
echo(
echo Report for:
echo %%A
echo(
echo Subfolders:
dir /a:d /o:n /b "%%A"
echo(
echo Files:
dir /a:-d /o:n /b "%%A"
echo(
echo \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
)>>"%dir%\index.txt"
Naturalmente, você pode manter/jogar/alterar qualquer parte disso para fazer com que seu arquivo de saída tenha a aparência desejada - então isso é apenas para lhe dar uma ideia. Isso define uma dir
variável como sua pasta superior para que possamos mudar as coisas com mais facilidade. Existe if exist
apenas para obter a dir
saída dessa pasta superior - caso contrário, teremos um for /d /r
comando que fará um loop recursivo por ela. O layout de saída é uma preferência pessoal com base no que achei mais atraente (sem me preocupar muito com isso) depois de percorrer vários lugares. Você notará que depois de definir a dir
variável, a primeira coisa que o lote faz é excluir o arquivo de índice, para que eu não precise fazer isso manualmente após cada verificação - caso contrário, >>
continuarei repetindo várias execuções até o final dele .
Se você deseja um arquivo de índice separado paracadasubpasta, tudo o que você precisa fazer é ativar a expansão atrasada e aninhar a parte principal do for
loop assim:
setlocal enabledelayedexpansion
for /d /r "%dir%" %%A in (*) do (
set "name=%%~nA"
(echo(
echo Report for:
echo %%A
echo(
echo Subfolders:
dir /a:d /o:n /b "%%A"
echo(
echo Files:
dir /a:-d /o:n /b "%%A"
echo(
echo \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\)>>"%dir%\!name! index.txt"
)
Isso lhe dará um arquivo de texto separado com o nome da pasta ( %%~nA
) no título de cada uma. Se você é preguiçoso como eu e deseja excluir os arquivos de índice individualizados antes de executar isso,nnúmero de vezes, você pode lançar um if exist "%dir%\!name! index.txt" del /f /q "%dir%\!name! index.txt"
imediatamente após definir a name
variável no loop - que eu também poderia colocar em um bloco:
for /d /r "%dir%" %%A in (*) do (
set "name=%%~nA"
if exist "%dir%\!name! index.txt" del /f /q "%dir%\!name! index.txt"
(echo(
Deixe-me saber se você estava procurando algo totalmente diferente ou se isso foi útil.