2013-06-22 3 views
5

Un helpful FAQ from Stata décrit que les arguments peuvent être passés aux fichiers do. Mon fichier do ressemble à ceci:Arguments de ligne de commande Stata en mode par lots

* program.do : Program to fetch information from main dataset 
args inname outname 

save `outname', emptyok // file to hold results 
insheet using `inname', comma clear names case 

// a bunch of processing 

save `outname', replace 

Selon la FAQ, peut être exécuté en utilisant ce script do filename.csv result.dta. Lorsque j'exécute cette commande à partir de Stata, tout fonctionne correctement. Le programme est long, cependant, je veux l'exécuter en mode batch. Stata a another FAQ sur le mode batch.

En combinant les informations de ces pages Web, je tape ce qui suit à mon invite Unix:

$ nohup stata -b do program.do filename.csv result.dta & 

Stata démarre, mais il se termine avec l'erreur suivante:

. save `outname', emptyok // file to hold results 
invalid file specification 
r(198); 

Un peu d'expérimentation raconte moi que Stata ne reçoit jamais les deux arguments quand je lance le programme en mode batch. Quelle est la solution à ce problème? (?-À-dire comment passer des arguments à un fichier faites-vous lors de l'exécution en mode batch)

+0

Il semble que vous ne pouvez pas faire cela. –

Répondre

5

Le fil ci-dessous peut être utile:

http://www.stata.com/statalist/archive/2012-09/msg00609.html

Sous Windows, si mon programme Test.do est:

args a b 
display "`a'" 
display "`b'" 

Je peux l'exécuter en mode batch sous Windows en tapant simplement:

"c:\Stata13\stata.exe" /e do "c:\Scripts\Test.do" Test Script

Et il affiche (STATA):

Test

Script

Je me demande donc si le nohup est ce qui empêcher votre programme de travail.