我正在编写一个批处理文件,用于压缩MS Access 2010文件(文件扩展名为.accdb),使用日期和时间重命名zip文件,然后将zip文件移动到名为Backups的子文件夹。以下显示了目前的代码:
@echo off
"C:\Program Files\VMware\VMware Tools\zip.exe" backup.zip *.accdb
for /f "tokens=1-5 delims=/ " %%d in ("%DATE%") do (set thedate=%%g-%%e-%%f)
for /f "tokens=1-3 delims=/:" %%a in ("%TIME:~0,8%") do (set thetime=%%a-%%b-%%c)
set thetime=%thetime: =0%
rename backup.zip %thedate%_%thetime%.zip
move %thedate%_%thetime%.zip .\Backups
%SystemRoot%\explorer.exe .\Backups
这很好用。但是,我想在开头添加一个检查,以查看在执行zip操作之前是否有任何用户打开Access文件(如果有* .laccdb文件,则会出现)。所需的逻辑是:
如何将此IF / THEN / ELSE类型逻辑添加到批处理文件中,如何检查* .laccdb文件?
答案 0 :(得分:1)
if exist *.laccdb (echo Send the message) else (echo continue the processing)
是完整格式。当然,echo
语句可以是您喜欢的任何语句系列,例如
if exist *.laccdb (
echo Send the message
goto sendmessage
)
rem the file does not exist, so carry on with the ZIP operation
... your ZIP operation goes in here
goto :eof
:sendmessage
rem put whatever code you want to send the message in here.
goto :eof
请注意,goto :eof
非常具体,它需要冒号并表示“转到此批处理文件的末尾”它是cmd
的固有内容 - 标签不应该是用户声明的。
if
的格式也是具体的。此语法是必需的:
if condition (
dothis_if_true
) else (
dothis_if_false
)
括号的定位至关重要。第一次打开必须与if
(或执行)位于同一物理行上,如果使用了else,则前面的)
和后续(
必须与else
在同一物理线路上发生。