Stata中五条特别好用的DOS命令

2018-01-05 张学人 爬虫俱乐部 爬虫俱乐部


有问题,不要怕!点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~

喜大普奔~爬虫俱乐部的github主站正式上线了!我们的网站地址是:https://stata-club.github.io,粉丝们可以通过该网站访问过去的推文哟~

Hello!爬虫小编又见诸君了。孔子曰:温故而知新。时间虽已迈入2018年,然2017年的那255篇推文里还有着许多丰富的宝藏等着大家挖掘,前些日子小编整理了曾经我们在推文中所使用的DOS命令,整理并拓展成本文,以飨诸君。

WHAT: DOS是什么

DOS(Disk Operating System),全称磁盘操作系统,是个人计算机上的一类操作系统。从1981年直到1995年的15年间,磁盘操作系统在IBM PC 兼容机市场中占有举足轻重的地位。早期的Windows系统即也是依托DOS开发,在之后虽独立为Windows系统,然将DOS一直保留至今。我们可以通过调取Windows内置应用Command来启动DOS,并在其中输入DOS指令。DOS指令可以完成大部分磁盘相关操作,如新建、移动、复制、删除文件(夹),而大量脚本工具也并无可视化界面,同样在DOS中以 cmd - args 的形式使用,故DOS命令在当下依然发挥着强大作用。

WHY: 为什么我们要了解一些DOS指令

就如前面所说,DOS指令的功能十分强大,许多在Stata下难以实现的需求可以通过DOS轻松完成,并且效率极快,因此如果明白并知道一些DOS系统下的基本操作,不仅对于Stata使用十分有帮助,也能通过批处理文件很好地提升管理计算机的能力。

HOW: 如何在Stata中使用DOS指令

在Stata中使用DOS指令非常地简单,只需要在DOS命令的前面加上一个英文的感叹号!,Stata即可将本条命令自动送入DOS系统内执行。如mkdir subfile是一条DOS指令,它会在当前目录下创建一个subfile的子文件夹,那么只需在Stata中输入 !mkdir subfile,DOS系统在执行完本条指令后,就会在Stata当前目录下创建一个subfile的子文件夹。如下图所示,我们进入F盘根目录,使用dir subfile发现并没有subfile这个文件,而进行mkdir subfile之后再dir,则发现新生成了一个文件夹。

1

mkdir递归创建文件夹

mkdir指令(make directory)可以指定一个地址以创建文件夹。虽然Stata中也有mkdir命令,但一个很明显的局限是Stata自带的mkdir并不能 递归创建文件夹,如在当前F盘根目录下,创建如下目录 F:\filename1\filename2,而其中filename1这个中间文件夹是不存在的,此时Stata命令就会报错

mkdir F:\filename1\filename2

所以如果Stata命令想要达到这个目的,则需先生成filename1文件夹,然后再生成filename2文件夹,也就是一层一层的创建。

mkdir F:\filename1\

mkdir F:\filename1\filename2\

DOS下的mkdir默认是支持递归创建文件夹的,也就是说,如果系统发现filename1文件夹不存在的话,会一并创建,省去了逐层创建的麻烦。

2


 dir展示并输出目录内容

前 段时间,中山大学连玉君老师向我们提出了这么一个问题: 现有一个Stata资料的文件夹,其下有着非常多、杂乱的子孙目录,目录内有老版 do、dta文件,现使用unicode命令将其转码,则需要点开每一个子文件夹进行转换,不能遍历转换,十分麻烦,故需要一个方法将该文件夹下所有的子 目录遍历一遍,并返回所有的子(孙)文件夹地址。

!dir /B /S /ad >> output.txt

导出结果如下所示:

这条简洁的指令完美地解决了这一问题,其中:

• /B 参数表示只显示文件名,其余一概不显示

• /S 参数表示将该目录下所有的文件及子目录下所有文件,遍历列举

• /ad 参数表示只显示文件夹,而不显示文件,因为我们的工作是要遍历每一个文件夹下的内容,因此只需要知道这个目录下都有哪些文件夹路径即可。

• >> 是输出重定向操作符,将该条指令得到的结果都输出到output.txt文件内。由于在Stata内调用DOS指令,如果不输出重定向,那么得到的结果就会在DOS内显示并一闪而过,故需将内容输出重定向以便后面使用。

关于该命令的实际应用,亦可参考爬虫俱乐部往期推文 批量处理——输出文件名到文本文档

3

rmdir删除文档树

rmdir指令(remove directory)可以删除一个文件夹。同样,Stata虽然也有rmdir命令,但只能删除空文件夹,而DOSrmdir指令可以删除整个文件夹下的所有文件,以及这个文件夹本身。

DOS指令:

!rmdir file_path /S/Q

其中,/S参数指的是一并删除该文件夹下所有子文件,在每次删除时都会弹出提示,是否删除。/Q参数指的是静默删除,不再提示我们是否删除某个文件。

关于该命令的实际应用,亦可参考爬虫俱乐部往期推文 批量删除,拒绝手工

4

del删除文档

del指令(delete)用于删除一个文件,Stata与之对应的命令是erase,而两者的区别是Dos命令中的del可以删除只读文件,而stata中的erase删除不了。示例指令如下:

! del F:\sample\*.dta /f /s /q

该指令可以删除F:\sample目录下的所有dta文件(即F:\sample以及其子目录下的所有dta文件)

其中:

• /f 表示强制删除只读文件

• /s表示删除当前目录及所有子目录下的文件

/q表示安静模式,无需确认

关于该命令的实际应用,亦可参考爬虫俱乐部往期推文 批量删除,拒绝手工

5

findstr深入文件查找想要的内容

有时候你会需要从某一个文件中查找一些内容,并将符合条件的信息输出出来,此时如果Stata正使用着别的数据,则不方便读入处理,那么我们使用DOS指令就可以非常轻松地完成任务。

需求:有如下csv文件,记录了上市公司的控股公司及所属股票代码,现需要将代码为600004的公司全部找出来,并输出至一个指定文档中。

...
临川浦发村镇银行股份有限公司,600000
临武浦发村镇银行股份有限公司,600000
衡南浦发村镇银行股份有限公司,600000
哈尔滨呼兰浦发村镇银行股份有限公司,600864
公主岭浦发村镇银行股份有限公司,600000
浦发村镇银行,600000
广州白云国际机场股份有限公司,600004
广州白云国际机场汉莎航空食品有限公司,600004
广州白云国际广告有限公司,600004
广州白云国际机场空港快线运输有限公司,600004
广州白云国际机场地勤服务有限公司,600004
广州空港之旅国际旅行社有限公司,600004
广州白云国际机场二号航站区管理有限公司,600004
广州航空货站有限公司,600004
广州白云天骏国际传媒有限公司,600004
广州白云国际物流有限公司,600029
...

命 令

!findstr 600004 corp.csv >> specified.txt

即可以将corp.csv文件中所有包含600004字样的行重定向输出到specified.txt中。

当然,findstr更强大的功能是支持类似正则表达式的匹配

!findstr 60003[1-9] corp.csv >> specified.txt

该命令可以将600031-600039所有的公司匹配出来并输出至指定文档中。

WHERE: 我可以去哪里了解更多DOS指令

今天列举的只是非常少的一部分DOS指令,都对Stata平时的操作有着许多便利的作用。而DOS指令浩如烟海,我们可以去哪里学习到更多DOS命令呢?答案或许有点意想不到,那就是MS-DOS自带的帮助系统

首先在电脑中找到cmd应用,并进入。然后在页面内直接输入help即可看到DOS目前支持的命令,在每一个命令后直接加 /? 即可看到关于该命令的使用详情。如下图所示,微软为中国区的DOS指令配置了中文帮助文件,帮助大家更快学习。

关于DOS指令如何在Stata中应用,实际上非常地多样又高效,希望随着今天本篇入门介绍,大家能和小编一样对DOS指令燃起巨大的兴趣,一起加固自己的技术护城河。

注:此推文中的图片及封面均来源于网络!如有雷同纯属巧合!

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

                        文字编辑:王   明

技术总编:刘贝贝



往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3.命令sum2docx输出统计量表到docx文件

4.reg2docx报告你的实证结果吧!

5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件

6.putdocx+wordconvert—将实证结果输出到Word.docx)文档

7.Stata 15Markdown——没有做不到,只有想不到!

8.矩阵和宏的故事

9.shelloutopen anything

10.Putpdf--神奇的转换工具



关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部   

微信扫一扫
关注该公众号

公开收集正在保存拖拽至此处以完成收集私密