4

我将这个 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

也可以看看:

4

1 回答 1

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
}
于 2015-01-20T16:11:14.240 回答