我使用的是 Windows7,我想知道文件(或对象)的数量,以便与 Amazon S3 存储桶中的对象进行比较。我对大小不感兴趣,因为不同文件类型的大小可能不同。
我想在命令提示符下以列表形式执行此操作(以 dir 开头),以便我可以从多台不同的计算机将其输出到电子表格中,以便我可以验证 vs s3。此输出为 dir>.txt,其中来自 dir 的信息不仅是日期 | 时间 | 类型(目录或文件) | 文件名 | 以及对象数量。
我需要访问数十台计算机上的数百个文件夹,因此我正在寻找 1) 简单且 2) 不需要单独输入每个文件夹的名称 3) 可以在每个文件夹和子文件夹中进行递归搜索 4) 生成列表输出的命令。dir 命令本身已经完成了 90% 的工作,只是缺少文件夹内文件的数量,希望这是一个易于生成的输出。
请不要推荐 Linux 或 Powershell,因为它们无法应用。
答案1
您可以使用此命令:
@echo off & cd "Filepath" & for /f "tokens=* delims=*" %a in ('dir /s /b') do (set "name=%~fa" & set "date=%~za" & set "type=%~xa" & echo %date% %type% %name% >>"Output.txt")
此处将“Filepath”替换为文件夹路径,将 output.txt 替换为输出文本文件。如果您需要添加更多属性,请在评论中联系我。从 Cmd 运行此命令。
答案2
@echo off & title <nul & title ...\%~nx0
cd/d "%~dp0" && setlocal EnableDelayedExpansion
>nul del/q /f "%temp%\_output_.csv" .\output.csv 2>&1
for /d /r %%I in (*)do for /f %%i in ('dir/b "%%~I"^|find/c /v ""
')do >>"%temp%\_output_.csv" echo\%%~tI,^<DIR^>,%%~nxI,%%~i,files
<con: >nul move "%temp%\_output_.csv" .\output.csv 2>&1 & endlocal
获取没有预定义布局的项目文件夹、文件、对象总数、日期的列表...并不是一件容易实现的事情,尤其是当我们不知道对于那些询问的人来说什么是简单的时候。
你可以试试:
- 为了命令行:
@for /d /r %I in (*)do @for /f %i in ('dir/b "%~I\"^|find/c /v ""')do @echo\%~tI ^<DIR^> %~nxI %~i files
@echo off
rem :: go to your destination folder
cd /d "%~dp0"&& setlocal EnableDelayedExpansion
rem :: remove any files from previous runs (if exist)
>nul del/q /f "%temp%\_output_.csv" .\output.csv 2>&1
rem :: use a `for` loop to recursively folder and a second loop to
rem :: count your files in the current folder in the first `for` loop
for /d /r %%I in (*)do for /f %%i in ('dir/b "%%~I"^|find/c /v ""
')do >>"%temp%\_output_.csv" echo\%%~tI,^<DIR^>,%%~nxI,%%~i,files
rem :: save the results to the temporary folder, then move to the current
<con: >nul move "%temp%\_output_.csv" .\output.csv 2>&1 & endlocal
- 一些使用
for
变量替换的选项:
%%~i - expands %%i removing any surrounding quotes (")
%%~fi - expands %%i to a fully qualified path name only
%%~ti - expands %%i to date/time of file only
%%~ni - expands %%i to a file name only
%%~xi - expands %%i to a file extension only
%%~nxi => expands %%~i to a file name and extension
- 选项
/d /r
没有记录,但可以是一个有用的组合,虽然它会递归遍历所有子文件夹通配符仅与文件夹/目录名称匹配(不是文件名)。