0

我写了一个脚本来检查文件是否存在,然后给我发一封邮件。但它不能正常工作。如果提供任何建议或解决方案,非常感谢..我的脚本如下..

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 
4

4 回答 4

3

你有:end标签吗?

如果您使用goto :EOF而不是,goto end则不需要标签。

于 2013-06-13T07:19:56.790 回答
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 
于 2013-06-12T18:31:00.397 回答
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
于 2013-06-19T16:27:06.850 回答
0

您在其中一个评论中提到了该类型File。如果我理解正确,您说的是 Windows 资源管理器或“属性”对话框中显示的文件类型。然而,在编写批处理文件时,处理文件扩展名更容易。现在,名为的文件类型只是File向我表明,您试图验证其存在的这个文件没有扩展名,即它的名称只是Program,而不是Program.something.

但是,您在IF EXIST命令中使用的掩码,Program.*将匹配Program不带扩展Program名的始终调用分支的脚本。Program.txtProgram.exeProgram.I.cannot.imagine.what.elseProgramFileE:\:fileexists

如果要专门检查是否存在Program,只需按原样指定名称,不要使用掩码Program.*。换句话说,改变这一行

SET file1=E:\Program.*

对此

SET file1=E:\Program
于 2013-06-13T09:09:34.920 回答