
我有數十個資料夾,其中包含多個文件,我想知道如何(或如果可能)使用例如以下命令來回顯文字檔案中每個資料夾的內容:目錄 > 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
這將為您提供一個單獨的文字文件,每個文件的標題中都包含資料夾名稱 ( )。如果您像我一樣懶惰並且想在運行之前刪除個性化索引文件n第幾次,您可以在循環中if 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(
如果您正在尋找完全不同的東西,或者這是否有幫助,請告訴我。