我有一个我遇到问题的批处理文件。我需要找到一个文件的名称,然后将其设置为一个变量。然后我将使用它将它传递到vbs脚本以进一步查看文件。该文件的名称为logfile_date_time.log,但时间因启动时间而异。批处理文件的目的是找出该文件的最后修改日期。
set fordate=%date:~4,2%%date:~7,2%%date:~10,4%
set filename=c:\logfile_%fordate%_*.log
if exist %filename% (goto exist) else (goto noexist)
:exist
vbsscript.vbs /file:%filename%
goto end
:noexist
file doesn't exist code blah blah
:end
pause
出于安全考虑,我必须修改文件夹的名称并删除一些代码,因为这是为了工作。
任何帮助表示赞赏。谢谢!
答案 0 :(得分:0)
未经测试:
set "last_modified="
for /f "delims=" %%f in ('dir /a-d /tw /o-d /b^| findstr /r /i /c:"logfile_[0-9][0-9]*_.log"') do (
do set "last_modified=%%~dpfnxf"
goto :break_loop
)
:break_loop
if defined last_modified echo file %last_modified% exist ...
答案 1 :(得分:0)
您的代码的问题在于它不会扩展通配符(*
),并且您的VBScript可能不会自己处理文件名中的通配符(例如,FileSystemObject
方法“T)。如果您要处理的文件是唯一与您的模式匹配的文件,则可以执行以下操作:
@echo off
setlocal
set "fordate=%date:~4,2%%date:~7,2%%date:~10,4%"
pushd C:\
for %%f in (logfile_%fordate%_*.log) do vbsscript.vbs /file:"%%~ff"
popd