【发布时间】:2014-08-14 06:02:30
【问题描述】:
我正在尝试创建一个文件名列表,其中LastModified 时间戳大于设定值。
我认为,我非常接近以下几点:
@echo off
setlocal DisableDelayedExpansion
REM delete existing output file
for %%f in (_modified) do if exist %%f.txt del %%f.txt
REM hard code timstamp threshold
set lastTime=20140801000000
echo "lastTime=%lastTime%"
REM set folder to CWD
set "folder=%CD:~2%"
echo "folder=%folder%"
REM search files in folder with extension 'jpg'
FOR /F "skip=1 tokens=1*" %%a in (
'"wmic datafile where (path='%folder:\=\\%\\' AND Extension='jpg') get 'File Name',LastModified"'
) do (
FOR /F "delims=." %%B in ("%%b") do (
if %%B LEQ %lastTime% (echo "%%B LEQ1") else (echo "%%B GEQ1")
if %%B GEQ %lastTime% (echo "%%B GEQ2") else (echo "%%B LEQ2")
if %%B GEQ %lastTime% (
echo %%B %%a>> _modified.txt))
)
但是,对于包含 2 个 jpg 文件的文件夹,其中一个的最后修改时间是 2010-02-22,另一个是 2014-08-14,脚本会打印:
"lastTime=20140801000000"
"folder=\test"
"20100222210624 LEQ1"
"20100222210624 GEQ2"
"20140814155354 LEQ1"
"20140814155354 GEQ2"
输出文件包含两个文件名,而不是预期的结果。
显然 LEQ/GEQ 比较没有按我的预期工作,但我不确定哪里不正确。
【问题讨论】:
标签: batch-file