我有一个DOS批处理文件,它将创建一个列出文件夹树中包含的文件的报告。下面的代码为超过115,000个文件生成所需的输出。但是,生成了13条记录,其中包含空白日期/时间和文件大小。当我手动执行DIR命令(不带/ b选项)时,会显示所需的文件信息。如果不添加可观的解决方法代码,是否可以更正此问题?
FOR /f "tokens=*" %%A IN ('DIR "<Path>" /a:-d /b /s') DO (
ECHO %%~tA %%~zA %%~dpA %%~nA %%~xA >> test.txt
)
答案 0 :(得分:1)
(FOR /f "tokens=*" %%A IN ('DIR "<Path>" /a:-d /b /s') DO (
if exists "%%~A" ECHO %%~tA %%~zA %%~dpA %%~nA %%~xA
)) >> test.txt
未获取日期/文件大小的主要原因是找不到该文件。
您的代码如何运作?
for /f
启动一个运行cmd
命令的单独dir
实例。
当检索到所有数据并将其加载到内存中时(即cmd
/ dir
命令完成),for
将开始迭代检索到的行。信息检索和信息处理之间已经过了一段时间。
在这个时候,&#34;也许&#34;有问题的文件已被移动/删除/重命名,无法访问它们以检索其属性。因此,首先检查文件是否仍然存在
aditional括号和重定向更改是为了避免必须为每个echo
操作打开目标文件。这样,文件在for
命令的开头打开,最后关闭。