0
我有一个批处理脚本,它解析一个XML文件,并用提取的数据(提取的文件)创建一个文件。为什么在处理刚刚创建的文件时,最后一行是第一行?
在同一批处理脚本中,我使用解压缩的文件创建一个带有SQL命令的文件(sql文件)。
当我开始创建SQL文件时,我首先从提取的文件中获取最后一条记录(行),并正确创建语句。
如何停止获取最后一条记录:buildsql?
@echo off
echo Beginning parsing of XML files for pagecount and docid extraction.
echo Processing...
SET /A counter = 0
FOR /F %%i IN (CDIZeroPage.TXT) DO (
IF EXIST %%i (
FOR /F "tokens=12 delims==" %%h IN (%%i) DO (CALL :pagestring %%h)
FOR /F "tokens=8 delims==" %%g IN (%%i) DO (CALL :docidstring %%g)
)
)
goto buildsql
:pagestring
echo %1 >> C:\Richtemp\PagesandDocs.txt
CALL set page=%1
goto :eof
:docidstring
echo %1 >> C:\Richtemp\PagesandDocs.txt
CALL SET docid=%1
SET /A counter+=1
goto :eof
:buildsql
echo End extracting pagecount and docid.
echo Number of files processed %counter%
echo
echo Begin building SQL
echo Processing...
SET /A counter=0
SET /A countbytwo=0
FOR /F %%i IN (PagesandDocs.txt) DO (
CALL :subroutine %%i
SET /A counter+=1
)
goto endofscript
:subroutine
SET /A countbytwo+=1
IF %countbytwo%==1 (
FOR /F "DELIMS=" %%G IN ('ECHO %1') DO (SET page=%%~G)
echo Update documents set pagecount = %page% >> C:\Richtemp\Update.txt
)
IF %countbytwo%==2 (
FOR /F "DELIMS=" %%G IN ('ECHO %1') DO (SET docid=%%~G)
echo where uniqueid = %docid% ^; >> C:\Richtemp\Update.txt
SET /A countbytwo=0
)
goto :eof
:endofscript
SET /A counter/=2
echo End building sql, number of scripts built %counter%
:eof
是的,它太复杂了。我缩小了它,并立即写了两个文件,这“解决了”我的问题。我只是无法确定为什么最后的记录是在这个版本中首先写入的。感谢您的解释,它会帮助我编写脚本。 – 2012-02-15 13:18:32