我有一个DOS批处理文件,将创建一个报告,列出包含在文件夹树中的文件。 下面的代码产生所需的输出超过115000的文件。 然而,生产空白的日期/时间和文件大小13条记录。 当我手动执行DIR命令(不带/ B选项),所希望的文件的信息被呈现。 可以这样不增加相当大的解决方法代码修正?
FOR /f "tokens=*" %%A IN ('DIR "<Path>" /a:-d /b /s') DO (
ECHO %%~tA %%~zA %%~dpA %%~nA %%~xA >> test.txt
)
(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
将开始进行迭代检索的线以上。 一段时间已在信息检索和信息处理之间传递。
在这个时候,“可能”有问题的文件已经被移动/删除/重命名,他们不能被访问来获取它们的属性。 因此,首先检查文件是否仍然存在
的aditional的括号和重定向变化是为了避免必须打开目标文件为每个echo
操作。 这样一来,该文件在打开的开始for
命令,并收于结束。