如何阻止脚本运行?

时间:2009-03-16 12:46:02

标签: windows batch-file scripting

我有以下脚本,

more +1 "C:\Documents and Settings\Administrator\Desktop\Backup Data\import file\1.txt" > "C:\Documents and Settings\Administrator\Desktop\Backup Data\import file\2.txt"
"C:\Program Files\Microsoft Office\Office11\MSACCESS.EXE" "C:\Power Play\Daily\Daily.mdb" /x "Macro1"
DEL  "C:\Documents and Settings\Administrator\Desktop\Backup Data\import file\*.*" /q

我正在做的第一行,因为我的文本文件顶部有一个空白行,然后是标题,然后是数据。

我的问题如下,有时文本文件只包含空行和标题。因此,在截断之后,我最终只得到了header。当我将数据导入访问时,这会导致我出现问题。

任何人都可以提供我的方式,如果文件为空,我可以停止导入访问

2 个答案:

答案 0 :(得分:1)

如果文件只包含空行和标题,则可以将以下内容添加到脚本中以退出:

@echo off
setlocal enableextensions enabledelayedexpansion

set INPUT="C:\Documents and Settings\Administrator\Desktop\Backup Data\import file\1.txt"
set OUPUT="C:\Documents and Settings\Administrator\Desktop\Backup Data\import file\2.txt"

:: Get the number of lines in the file.
:: Skip the first line since it is blank.
set LINES=0
for /f "skip=1 delims=" %%I in (%INPUT%) do (
    set /a LINES=LINES+1
    if !LINES! EQU 2 goto :PROCESS
)
@echo %INPUT% is empty.
endlocal
exit /b 1

:PROCESS
:: Process the file
more +1  %INPUT% > %OUTPUT%
"C:\Program Files\Microsoft Office\Office11\MSACCESS.EXE" ^
"C:\Power Play\Daily\Daily.mdb" /x "Macro1"
DEL "C:\Documents and Settings\Administrator\Desktop\Backup Data\import file\*.*" /q

endlocal
exit /b 0

答案 1 :(得分:0)

我找到了一种检查文件大小的方法:

for %R in ("C:\...\import file\1.txt") do if %~zR lss 80 exit 1

这会检查文件大小(如果它小于80个字节)。我不知道如何检查Windows批处理文件中的行数。

我建议停止使用这个残缺的发明(批处理文件)并切换到理智的shell。