我希望获取Windows中目录中每个文件的最后修改日期,将其输出到文本文件,然后将该文本文件的每一行作为输入读取。
以下是我的.bat文件的内容。
@echo off
WMIC DATAFILE WHERE "PATH='\\Users\\n63206\\Desktop\\Project\\'" GET Name, LastModified > out.txt
for /f %%a in (out.txt) do (
echo %%a
)
echo test
运行脚本后,只打印出“test”。当我打开out.txt时,我看到我输出到它的最后修改日期显示正常,如果我创建一个新的文本文件(不能使用out.txt)并在那里手动输入一些行,我的for循环可以打印出来该文件中的所有行。我非常感谢任何建议,以帮助我解决这个问题!
答案 0 :(得分:0)
问题是生成的文件是UTF-16,小端,BOM前缀文件。也就是说,它每个字符包含两个字节,并以两个字符0xFF 0xFE为前缀。
for /f
无法读取此文件。
您的选择是:
1 - 阅读生成的信息
for /f "delims=" %%a in (
' wmic datafile where "path='\\Users\\n63206\\Desktop\\Project\\'" get name^,lastmodified '
) do echo %%a
2 - 生成文件后,在读取文件时转换文件
wmic datafile where "path='\\Users\\n63206\\Desktop\\Project\\'" get name,lastmodified > out.txt
for /f "delims=" %%a in ('type out.txt') do echo %%a
3 - 生成文件时转换文件
wmic datafile where "path='\\Users\\n63206\\Desktop\\Project\\'" get name,lastmodified | find /v "" > out.txt
for /f "delims=" %%a in (out.txt) do echo %%a