DOS批处理文件变量修改器返回空白(DOS Batch File Variable Modifier

2019-10-21 17:28发布

我有一个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
)

Answer 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将开始进行迭代检索的线以上。 一段时间已在信息检索和信息处理之间传递。

在这个时候,“可能”有问题的文件已经被移动/删除/重命名,他们不能被访问来获取它们的属性。 因此,首先检查文件是否仍然存在

的aditional的括号和重定向变化是为了避免必须打开目标文件为每个echo操作。 这样一来,该文件在打开的开始for命令,并收于结束。



文章来源: DOS Batch File Variable Modifier Returns Blank