我正在尝试在本地驱动器上的特定位置创建所有文件夹的列表。下面的代码计算文件的数量。我将如何修改它以便计数包括文件和文件夹而不仅仅是文件
@echo off
setlocal enableextensions disabledelayedexpansion
set "root=%cd%"
set "folder="
for %%r in ("%root%") do (
set "rootDrive=%%~dr\"
if not defined rootDrive set "rootDrive=\\"
for /f "delims=" %%a in ('
dir /s /a "%%~fr.\*" 2^>nul ^| findstr /r /c:"^ " /c:"^ .*\\."
') do for /f "tokens=1,* delims=\" %%b in ("%%~a") do if not "%%c"=="" (
set "folder=%%c"
) else if defined folder (
for /f %%d in ("%%~a") do (
setlocal enabledelayedexpansion
echo(!rootDrive!!folder! : %%d
endlocal
)
set "folder="
)
) >> output.txt
答案 0 :(得分:0)
您可以尝试一下,未经测试,在大型目录结构上可能要花费一些时间:
csv
注意:由于该文件旨在从当前目录运行,因此@(For /F Delims^=^ EOL^= %%A In ('Dir/W/A-L 2^>Nul')Do @Set/A_f=_d,_d=%%A 2>Nul
Set/A_d-=2&Call Set/P"=%CD% : %%_f%% : %%_d%%"<Nul&Echo(
For /F Delims^=^ EOL^= %%A In ('Dir/B/S/AD-L 2^>Nul')Do @(
For /F Delims^=^ EOL^= %%B In ('Dir/W/A-L "%%A" 2^>Nul'
)Do @Set/A_f=_d,_d=%%B 2>Nul
Set/A_d-=2&Call Set/P"=%%A : %%_f%% : %%_d%%"<Nul&Echo())>"output.txt"
文件将计入其自己的ouptut中。
[编辑/]
我想您也可以使用延迟扩展来执行相同的操作,这可以使处理速度加快一小部分。这是对上述内容的修改,其中使用了延迟扩展,仅出于此目的,它也以“相对”格式生成输出:
output.txt