none
求助!编写批命令被for语句折腾死了!郁闷啊! RRS feed

  • 问题

  • 我编写一个批命令,

    用于以文件拷贝方式备份一些机器上的日志文件,其中用了for语句,并在for语句中调用了别的批命令,执行过程中发现for语句中批命令都能正常执行,但是for之后的语句都不执行了!这是为什么?

    批命令分3个:backup.cmd backup1.cmd backup2.cmd

    其中backup.cmd 是主程序,两个主要模块,fix模块用于重新备份前一次没有备份成功的文件,back模块用于备份当天的文件,结果无论执行了那个另一个都再不会执行。郁闷ing

    backup语句如下:


    ECHO 备份文件,并根据保留时间长短删除和存档备份的压缩文件
    title 备份窗口请勿关闭
    rem 导出商场号及收银机号
    bcp "select right(rtrim('0'+convert(char,idtcheckout)),2)  from flexpoint..workstat where idtcheckout<>0" queryout d:\posback\POS.txt -c  -U "sa" -P ""

    bcp "select right(rtrim(idtworkstat),4) from flexpoint..workstat where codtype=21 " queryout d:\posback\store.txt -c -U "sa" -P ""

    del temp*.txt /q
    del fix*.txt /q
    for /f "tokens=1* delims=- " %%i in (d:\posback\store.txt) do set store=%%i
    if not exist d:\posback\error1.txt goto back
    echo cm%store%


    :fix
    if exist d:\posback\error2.txt del d:\posback\error2.txt /q

    for /f %%i in (d:\posback\error1.txt) do (

    dir\\cm%store%%%i\sycpos\data\pos0%%i\hisKB002\K* /4> d:\posback\temp.txt
    type d:\posback\temp.txt |find "KBVer" >d:\posback\temp2.txt
    if  exist \\cm%store%%%i\sycpos\data\pos0%%i\hisKB002\K*  (backup2.cmd %%i %day% %store% 2) else (echo %%i >>error2.txt)
    )


    :back
    del d:\posback\error1.txt /q

    for /f %%i in (d:\posback\POS.txt) do (

    dir\\cm%store%%%i\sycpos\data\pos0%%i\hisKB001\K* /4> d:\posback\temp.txt
    type d:\posback\temp.txt |find "KBVer" >d:\posback\temp2.txt

    if  exist \\cm%store%%%i\sycpos\data\pos0%%i\hisKB001\K*  (backup2.cmd %%i %day% %store% 1) else (echo %%i >>error1.txt)
    )

    del temp*.txt /q
    goto end

     

    :end

    2008年7月3日 3:52