
여러 파일이 포함된 수십 개의 폴더가 있는데, 예를 들어 다음을 사용하여 각 폴더의 내용을 텍스트 파일로 에코하는 방법(또는 가능한지)이 궁금합니다.디렉토리 > 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
얻기 위한 것입니다 . 그렇지 않으면 이를 반복적으로 반복하는 명령이 있습니다. 출력 레이아웃은 여러 위치를 반복한 후 살펴보기에 가장 매력적이라고 생각한 것(너무 걱정하지 않고)을 기반으로 한 개인 선호도입니다. 변수 를 설정한 후 배치가 수행하는 첫 번째 작업은 인덱스 파일을 삭제하는 것이므로 확인할 때마다 수동으로 수행할 필요가 없습니다. 그렇지 않으면 끝까지 여러 번 실행하여 에코를 계속 유지하게 됩니다. .dir
for /d /r
dir
>>
별도의 색인 파일을 원하는 경우각하위 폴더에서 해야 할 일은 지연된 확장을 활성화하고 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(
완전히 다른 것을 찾고 계시거나 이것이 도움이 되었다면 알려주십시오.