我写了一个脚本来检查文件是否存在,并向我发送邮件。但它不能正常工作。真的很感激,如果有任何建议或解决方案.. 我的脚本如下..
SET file1=E:\Program.*
Set vLogFile=C:\logfile1.log
if exist %file1% goto fileexists
goto nofile
:fileexists
echo "File exist" > %vLogFile%
--my required mail sending info here--
goto end
:nofile
echo "No file exist" > %vLogFile%
--my required mail sending info here--
goto end
答案 0 :(得分:3)
你有:end
标签吗?
如果您使用goto :EOF
代替goto end
,则不需要标签。
答案 1 :(得分:2)
你需要一个更好的语法和所有双引号:
@echo off
setlocal
SET "file1=E:\Program.*"
Set "vLogFile=C:\logfile1.log"
if exist "%file1%" goto :fileexists
goto :nofile
:fileexists
>"%vLogFile%" echo "File exist"
--my required mail sending info here--
goto end
:nofile
>"%vLogFile%" echo "No file exist"
--my required mail sending info here--
goto end
答案 2 :(得分:1)
我解决了问题。下面是我做出更改后的脚本,现在按照我的要求正常工作。
SET file1=Program
Set vLogFile=C:\logfile1.log
cd \
e:
dir %file1% /s /b > %vLogFile%
if errorlevel 1 ( goto mail1) else (goto mail2)
:mail1
--my code of lines for sending mail--
goto END
:mail2
--my code of lines for sending mail--
goto END
:END
答案 3 :(得分:0)
您在其中一条评论中提到了File
类型。如果我理解正确,您正在讨论Windows资源管理器或“属性”对话框中显示的文件类型。但是,在编写批处理文件时,处理文件扩展更容易。现在,简单地称为File
的文件类型向我建议您尝试验证存在的此文件是否具有无扩展名,即其名称仅为Program
,如反对Program.something
。
但是,您在IF EXIST
命令Program.*
中使用的掩码将匹配Program
没有扩展名,Program
具有任意扩展名,即Program.txt
,Program.exe
,Program.I.cannot.imagine.what.else
等。也许,Program
中File
以外的E:\
个:fileexists
文件目录,这会导致脚本始终调用Program
分支。
如果要检查是否存在特定Program.*
,只需指定名称,不要使用掩码SET file1=E:\Program.*
。换句话说,改变这一行
SET file1=E:\Program
到这个
{{1}}