使用*作为变量批处理脚本设置文件名

时间:2013-10-29 21:18:25

标签: variables batch-file vbscript

我有一个我遇到问题的批处理文件。我需要找到一个文件的名称,然后将其设置为一个变量。然后我将使用它将它传递到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

出于安全考虑,我必须修改文件夹的名称并删除一些代码,因为这是为了工作。

任何帮助表示赞赏。谢谢!

2 个答案:

答案 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