我需要创建一个 Windows 批处理文件,该文件生成一个 .csv 文件,其中包含目录中所有文件的三个字段(减去批处理文件本身!)。
领域:
- 文件名(这可以包括逗号!)
- 创立日期
- 修改日期
请注意,批处理文件将从目录运行,并且应该知道为当前目录中的文件生成 .csv 文件,但不应列出批处理文件或生成的 .csv 文件。
Powershell、vbscript 等在我的情况下是不可行的,所以它必须是一个 Windows 批处理文件。
编辑:
这是我尝试过的两种主要方法。
第一次尝试:我尝试将裸文件名分隔为“temp1.tmp”,将具有创建时间戳的文件列表分隔为“temp2.tmp”,将具有修改时间戳的文件列表分隔为“temp3.tmp”。
DIR /B /A:-D-H | FIND /V "Print Files.bat" | FIND /V "File List" | FIND /V "temp" > "temp1.tmp"
DIR /A:-D-H /T:C | FIND /V "Print Files.bat" | FIND /V "File List" | FIND /V "temp" > "temp2.tmp"
DIR /A:-D-H /T:W | FIND /V "Print Files.bat" | FIND /V "File List" | FIND /V "temp" > "temp3.tmp"
MORE +5 "temp2.tmp" > "temp4.tmp"
COPY /Y "temp4.tmp" "temp2.tmp"
MORE +5 "temp3.tmp" > "temp4.tmp"
COPY /Y "temp4.tmp" "temp3.tmp"
DEL /F/Q "temp4.tmp"
但是这种方法的问题是我无法弄清楚如何一次从多个文件中读取行。这是我找到的最接近的,但它仅来自一个文件:
FOR /F "delims=" %%i IN (temp1.tmp) DO (
ECHO."%%i" >> "File List.csv"
)
第二次尝试:我尝试避免使用临时文件,但无济于事。
FOR %%i IN (*.*) DO @ECHO "%%~ni%%~xi",%%~ti >> "File List.csv"
第二种方法的问题在于它不排除批处理文件名,也不提供文件创建时间戳。
有没有一种解决方案可以让这些工作对我有用,或者我还没有尝试过的方法?