각 개별 폴더에 대한 텍스트 파일에 여러 폴더의 디렉터리를 어떻게 나열할 수 있습니까?

각 개별 폴더에 대한 텍스트 파일에 여러 폴더의 디렉터리를 어떻게 나열할 수 있습니까?

여러 파일이 포함된 수십 개의 폴더가 있는데, 예를 들어 다음을 사용하여 각 폴더의 내용을 텍스트 파일로 에코하는 방법(또는 가능한지)이 궁금합니다.디렉토리 > INDEX.txt배치 파일이나 명령줄에서.

나는 그것을 실행하는 것을 안다FOR /D %A IN (X:\destinationFolder*.*) DO (DIR >> INDEX.TXT "%A\")내용과 함께 나열된 모든 폴더가 포함된 텍스트 파일을 상위 디렉토리에 가져옵니다. 하지만 각 폴더에 대해 개별 색인을 만들 수 있습니까? 아니면 배치 스크립팅을 너무 많이 요구하고 있는 걸까요?

중요한 정보인지 확실하지 않지만 Windows 10을 실행하고 있습니다. 도움을 주시면 대단히 감사하겠습니다.

답변1

여기서 무엇을 찾고 있는지 잘 모르겠지만 이것을 함께 엮는 것이 작업하는 것보다 더 재미있었습니다.

@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"

당연히 출력 파일을 원하는 대로 보이게 만들기 위해 이 부분을 유지/버리기/변경할 수 있습니다. 따라서 이는 단지 아이디어를 제공하기 위한 것입니다. 이렇게 하면 변수가 최상위 폴더로 설정되므로 dir더 쉽게 변경할 수 있습니다. 이는 해당 최상위 폴더에 대한 출력을 if exist얻기 위한 것입니다 . 그렇지 않으면 이를 반복적으로 반복하는 명령이 있습니다. 출력 레이아웃은 여러 위치를 반복한 후 살펴보기에 가장 매력적이라고 ​​생각한 것(너무 걱정하지 않고)을 기반으로 한 개인 선호도입니다. 변수 를 설정한 후 배치가 수행하는 첫 번째 작업은 인덱스 파일을 삭제하는 것이므로 확인할 때마다 수동으로 수행할 필요가 없습니다. 그렇지 않으면 끝까지 여러 번 실행하여 에코를 계속 유지하게 됩니다. .dirfor /d /rdir>>

별도의 색인 파일을 원하는 경우하위 폴더에서 해야 할 일은 지연된 확장을 활성화하고 for다음과 같이 루프의 주요 부분을 중첩하는 것입니다.

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"
)

%%~nA이렇게 하면 각 파일의 제목에 폴더 이름( )이 포함된 별도의 텍스트 파일이 제공됩니다 . 나처럼 게으른 사람이고 이것을 실행하기 전에 개별화된 색인 파일을 삭제하고 싶다면Nif exist "%dir%\!name! index.txt" del /f /q "%dir%\!name! index.txt"루프에서 변수를 설정한 후 즉시 를 던질 수 있습니다 name. 블록에 넣을 수도 있습니다.

for /d /r "%dir%" %%A in (*) do (
    set "name=%%~nA"
    if exist "%dir%\!name! index.txt" del /f /q "%dir%\!name! index.txt"
    (echo(

완전히 다른 것을 찾고 계시거나 이것이 도움이 되었다면 알려주십시오.

참고자료:디렉토리그리고~을 위한.

관련 정보