2016-11-15 137 views
0

我在Windows 7 Professional上。我在C:\脚本中有以下文件。批处理脚本中途退出

clamav_daily_scan.bat 
log_email_clamav_daily_scan.bat 
email.vbs 
log.txt 

log_email_clamav_daily_scan.bat

@echo off 
@echo set variables 
SET DATETIME=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%%TIME:~9,2% 
SET LOG_DIR="%PROGRAMFILES(X86)%"\ClamWin\bin\daily_scan\log 
SET LOG_FILENAME=clamscanlog_%DATETIME%.txt 

@echo start daily scan 
C:\script\clamav_daily_scan.bat > %LOG_DIR%\%LOG_FILENAME% 

@echo send result 
C:\Windows\SysWOW64\cscript.exe C:\script\email.vbs %LOG_DIR%\%LOG_FILENAME% 

当我执行CMD上log_email_clamav_daily_scan.bat,它只是停止,直到开始每天扫描。

C:\script\log_email_clamav_daily_scan.bat 
set variables 
start daily scan 
+0

首先,删除'@echo off'或将其更改为'@echo on'或命令'REM把它注释掉'在开始时。其次,打开命令提示符窗口。第三,在双引号中输入带完整路径的批处理文件的名称。第四,按ENTER或RETURN,现在从命令提示符窗口中运行批处理文件,而不是双击它,可以看到错误消息输出,因为窗口在出错时保持打开状态。而且你也看到命令行在命令处理器处理后真正执行。这就是我们所说的调试批处理文件。 – Mofi

+0

如果使用您的用户帐户执行的批处理文件对目录'“%ProgramFiles(x86)%\ ClamWin \ bin \ daily_scan \ log”'具有写入权限,那么我会非常惊讶。请注意我在这里放置第二个双引号的位置,以及在代码中将第二个双引号放在字符串中的位置。为什么您使用'C:\ Windows \ SysWOW64 \ cscript.exe'而不是'%SystemRoot%\ System32 \ csript.exe'运行32位或64位控制台版本的Windows脚本宿主,具体取决于执行的批处理文件来自32位或64位命令解释器,具体取决于从32位还是64位进程启动? – Mofi

+0

还有一个类似的问题:重复吗? http://stackoverflow.com/q/1103994/4291215 – loadingnow

回答

0

使用

call C:\script\clamav_daily_scan.bat > %LOG_DIR%\%LOG_FILENAME% 

没有call脚本将结束一半