我将这个Perl单行放在一起,以确定Stata" ds_format"一些文件...
for file in *.dta; do perl -MParse::Stata::DtaReader -e 'open my $fileHandle, "<", @ARGV; my $dta = new Parse::Stata::DtaReader($fileHandle); print "$ARGV[0] is in STATA ds_format " . $dta->{ds_format} ,"\n\n";' $file; done
...但我假设有一种方法可以使用命令行stata
命令来获取相同的信息。在那儿?上面的脚本打印我的文件:
study1a.dta位于STATA ds_format 113
study1b.dta位于STATA ds_format 115
study2.dta位于STATA ds_format 115
另见:
答案 0 :(得分:1)
现在,您只需读取文件的第一个字符即可确定版本。除了版本文件格式版本117(Stata 13的当前版本)之外,版本将存储在XML中,因此必须增强此方法。
file open fhandle using dataset.dta, read binary
file read fhandle %1s firstbytechar
file close fhandle
if "`firstbytechar'"=="<"{
di "Version 117"
}
else {
mata: st_numscalar("v", ascii("`firstbytechar'"))
di "Version " v
}