Je suppose que je suis assez fou pour utiliser un fichier batch, en premier lieu, mais ce problème m'a arracher les cheveux! Le script de lot ci-dessous habituellement fonctionne très bien. Cependant, lors de la première exécution, une erreur "La syntaxe de la commande est incorrecte" sera générée; et il le fera jusqu'à ce que je sorte tout, l'exécute, et puis le REM
. Ensuite, il recommence à fonctionner comme par magie!Inconsistent "La syntaxe de la commande est incorrecte" erreur
@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
)
Si je REM
le @echo off
, il semble qu'il est défaillant parce que la substitution de variable parfois - pour des raisons inconnues - ne fonctionne pas. Puis, quand il arrive à sed
, il abandonne tout simplement.
Je suppose qu'il me manque quelque chose ... Des idées ce que ce pourrait être !? (En plus de mes billes!)
Rien de drôle, juste alphanumérique avec des traits de soulignement et des tirets (mais il baulks même sur 'test.csv'!). Je vais vérifier la nomenclature, mais je suis sûr que c'est juste en UTF-8; et je ne vois rien là-dedans qui le rendrait indiscernable de ASCII-7, si cela fait aussi la différence ... Merci pour le conseil :) – Xophmeister
si un script se comporte différemment la première fois que dans les exécutions suivantes, c'est habituellement un indice fort pour le [retarder l'expansion] (http://stackoverflow.com/a/30284028/2152082) (oui - je vois, c'est votre problème) – Stephan