我想我一开始就很生气地使用批处理文件,但是这个问题让我把头发扯掉了!下面的批处理脚本通常工作得很好。但是,在第一次运行时,它会给出“命令的语法不正确”的错误;它会一直这样做,直到我REM
把所有东西都搞定,运行它,然后取消REM
它。然后它神奇地再次开始工作!
@echo off
REM Create processed data directory
set "PROCDIR=processed"
mkdir %PROCDIR% 2>nul
REM Loop through CSV files and process them
for %%f in (*.csv) do (
set "in=%%~nf"
set "input=%%~nxf"
set "out_lang=%PROCDIR%\%in%_lang.csv"
set "out_spr=%PROCDIR%\%in%_spr.csv"
set "out_ajt=%PROCDIR%\%in%_ajt.csv"
echo Processing %input%
REM Split input file appropriately
REM FIXME Hardcoded line ranges are brittle
sed -n "1,2p" %input% > %out_lang%
sed -n "3,55p" %input% > %out_spr%.tmp
sed -n "56,$p" %input% > %out_ajt%.tmp
REM Unpack SPR data
REM n.b., Needs gawk 4, or later
gawk -f spr.awk %out_spr%.tmp > %out_spr%
del %out_spr%.tmp
REM Substitute AJT data values
REM n.b., -i seems to be buggy in Windows
sed -f ajt.sed %out_ajt%.tmp > %out_ajt%
del %out_ajt%.tmp
)
如果我REM
退出@echo off
,它似乎失败了,因为变量替换有时 - 由于未知原因 - 不起作用。然后,当它到达时sed
,它就放弃了。
我想我错过了一些东西......任何想法可能是什么!?(除了我的弹珠!)