查看原文
其他

DOS能量,超乎你想象!

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:吴    浩,河南大学经济学院

本文编辑:温和铭

技术总编:李婷婷

Stata&Python云端课程来啦!

       为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程Stata基础课程Stata进阶课程Stata文本分析正则表达式网络爬虫基本字符串课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~






DOS(Disk Operating System),是磁盘操作系统的简称。Stata磁盘操作命令涉及改变工作路径、构建新文件夹、压缩和解压缩文件、删除文件、备份文件和借助于其它Windows应用打开文件等。除此之外,Stata也可以通过“!”或“shell”直接调用Windows系统的DOS命令。下面的篇幅笔者将为大家推荐几个常用的DOS命令,希望有助于诸君。需要说明的是,Windows的DOS命令本身是不区分大小写的,以下内容中涉及Windows的DOS命令全部用大写,以便与Stata的命令有所区别。






创建目录(mkdir)

命令mkdir是make directory的缩写,即创建目录。需要指出的是在创建目录时应保证新目录在创建的位置中并不存在。使用mkdir命令新建目录时,如果目录名前没有给出路径,则Stata默认在当前路径下创建。若要在指定路径下创建,则需要在目录名前附上具体路径。以下给出mkdir命令的几种用法:

mkdir temp //在当前工作路径下创建名为temp的目录mkdir d:/temp //在d盘下创建名为temp的目录mkdir "temp 0" //当文件名中嵌入空格时,需添加双引号。该命令是在当前路径下创建名为"temp 0"的目录

如果文件夹已经存在,直接用mkdir命令会导致Stata报错。为了防止因为命令出错而造成程序停下来,可以在mkdir前面加上capture。capture可以放置于任何命令前面,告诉Stata,capture之后的命令如果能执行则执行,万一不能执行也不要报错。

mkdir每次只能创建一级子目录,如果要构建两级子目录,需要调用两次mkdir。比如,假定D盘没有temp子目录,我们可以通过以下命令分两次创建二级子目录temp1。

**构建二级子目录cap mkdir d:/tempcap mkdir d:/temp/temp1

这里,当我们调用Windows系统的MKDIR命令时,只需一行命令就可以完成多级子目录的创建,具体示例如下:

**构建多级子目录!MKDIR d:\temp\temp1\shell MKDIR d:\temp\temp1\temp2\
因为!和shell调用的是Windows系统的DOS命令,因此路径表达式中的路径分隔符只能使用Windows可以接受的“\”,不能使用Stata可以接受的“/”。


查看目录文件(dir)

命令dir是directory的缩写,用于查看Windows操作系统下的文件和文件夹。笔者将Stata出厂自带的数据auto.dta分别保存成不同名称的dta和txt格式的文件,然后为大家展示dir命令的具体用法。该过程如下:

**构建不同名称的数据文件clear allcap mkdir d:/temp/cd d:/temp/sysuse auto.dtasave myauto.dta,replacesave myauto1.dta,replacesave myauto12.dta,replacesave myauto123.dta,replacesave myautoa.dta,replacesave myautob.dta,replaceoutsheet using myauto1.txt,replaceoutsheet using myauto123.txt,replaceoutsheet using myauto1234.txt,replaceoutsheet using myauto12345.txt,replacedirdir myauto*.dtadir myauto*.txtdir myauto?.dtadir myauto??.txt
通过saveoutsheet命令,我们把auto.dta分别保存成10份不同名称的数据文件,然后使用dir命令来查看。在Stata命令窗口输入dir ,运行该命令后便可以在结果窗口得到如下所示的内容:

在上述的程序中,将通配符和dir结合进行使用。通配符是DOS(磁盘操作系统)的一种特殊表达形式,它可以实现文本的匹配。常用的通配符有"*"和“?”。通配符“*”可以匹配零个、任意单个或任意多个连续字符。通配符“?”能匹配零个、任意单个字符。dir命令是支持通配符的,下面将为大家展示通配符与dir命令的结合使用,以及相应的效果。
(1)dir与通配符“ * ”的结合使用:
我们可以看到在temp目录下的数据文件有很多,那么如何查看以myauto为开头的dta文件呢?这里我们可以使用通配符“*”,命令为dir myauto*.dta 。由于通配符“*”可以匹配任意字符,便可以在结果窗口显示所有以myauto为开头的dta文件,具体如下所示:

同样,我们也可以使用命令dir myauto*.txt来显示所有以myauto为开头的txt文本文件,其结果如下所示:

(2)dir与通配符“ ? ”的结合使用:

由于“?”能匹配到零个、任意单个字符。所以当我们使用命令dir myauto?.dta时会在结果窗口得到如下所示的4个以myauto开头的数据文件。

(3)dir与通配符“ ?? ”的结合使用:

由于通配符“??”可以匹配空字符,一个字符和两个字符,于是当使用命令dir myauto??.txt时, 结果窗口只会显示一个以myauto开头的文本文件。



删除目录(rmdir)

rmdir命令用于删除目录,Stata自带的rmdir命令只可以删除空的目录,如果目录名称包含嵌入的空格或特殊字符,则必须使用双引号。以下给出该命令的几种用法:

rmdir temp //删除当前路径下名为temp的空目录rmdir d:/temp //删除d盘下名为temp的空目录rmdir "d:/temp 01" //若目录名称嵌入空格,需使用双引号。该命令用于删除d盘下名为“temp 01”的空目录

当要删除的目录中存在文件时,Stata自带的rmdir命令已无法完成,此时要么先删除其中的文件,要么借助“!”或"shell"调用Windows系统下的DOS命令RMDIR来删除此类目录。例如:删除 d:/temp/temp1/ 文件夹以及其子文件所要用到的命令为!RMDIR d:\temp /s/q,其中/s参数指的是一并删除该文件夹下所有文件,在每次删除时都会弹出提示“是否删除。/q参数指的是静默删除,不再提示我们是否删除某个文件。



删除文件(erase、!DEL

本小节笔者为大家介绍两个删除文件的命令:erase!DEL 。其中erase为Stata自带的命令,该命令一次只能删除一个文件且必须给出文件的类型。!DEL为Windows系统下的DOS命令,该命令可以搭配通配符一起使用,因此能做到批量删除文件。我们使用Stata出厂自带的auto.dta数据,来展示这两个命令的用法并做出相关说明:

clear allcd D:/tempsysuse auto.dtasave auto1.dta,replacesave auto2.dta,replacesave auto3.dta,replaceoutsheet using auto1.txt,replaceoutsheet using auto2.txt,replaceoutsheet using auto3.txt,replaceerase auto2.dta //删除文件"auto2.dta"!DEL auto*.txt //删除所有以auto开头的txt文件!DEL auto?.dta //删除文件"auto1.dta"和"auto3.dta"


结束任务或进程(!TASKKILL)

taskkill命令用来结束任务或者进程。这是一个DOS命令,我们仍然使用“!”或 ”shell“来调用Windows系统下的TASKKILL命令。taskkill的具体命令规则如下:

taskkill [/s Computer] [/u Domain\User [/p Password]]] [/fi FilterName] [/pid ProcessID]|[/im ImageName] [/f][/t]
参数说明:

/s Computer:指定远程计算机名称或IP地址(不能使用反斜杠)。默认值是本地计算机。

/u Domain\User: 运行具有由User或Domain\User指定用户的账户权限命令。默认值是当前登录发布命令的计算机的用户权限。

/p Password:指定用户账户的密码,该用户账户在/u 参数中指定。

/fi FilterName:指定将要终止或不终止的过程的类型。

/pid ProcessID:指定将终止的过程的过程ID

/im ImageName:指定将终止的过程的图像名称。

/f:指定将强制终止的过程。

/t:指定终止与父进程一起的所有子进程,常被认为是“树终止”。

/?:在命令提示符处显示帮助。

以下三个例子将为大家展示该命令的具体用法。需要说明的是,鉴于多数用户使用的都是Windows操作系统,下述三个例子均是建立在该操作系统之下。

**调用word打开文件并关闭clearcd d:/tempshellout dream.docx //shellout命令调用word打开文件。sleep 10000!TASKKILL /im winword.exe /f //关闭word
**调用记事本打开文件并关闭clear allcd d:/tempsysuse auto.dta outsheet using auto.txtshellout auto.txt //shellout命令调用记事本打开文件sleep 10000!TASKKILL /im notepad.exe /f //关闭记事本 **播放音乐clear cd d:/tempshellout 二泉映月.mp3 //使用wmplayer播放器播放音乐。checksum d:\temp\二泉映月.mp3 local time = (r(filelen)*1.8/25700*1000)+5sleep `time'!TASKKILL /im wmplayer.exe /f //关闭wmplayer播放器

到这里今天的分享就结束了。想告诉大家的是关于DOS命令其实还有很多内容,今天只是给大家带来了其中较为常用的几个命令。正所谓万丈高楼平地起,希望这些基础的DOS命令能服务于大家今后的Stata学习当中。

END
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。



腾讯课堂课程二维码








            


 对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!











往期推文推荐
        Seminar丨肤色和信用:种族、监管和金融服务的质量

        爬虫实战丨走进哈利波特的魔法世界

        数据集合并的新路子-frlink命令

        Seminar丨附近的公司:利用卫星图像研究本地信息优势

        线性同余法生成伪随机数 

         [技能篇]多线程爬虫

“好哭”是衡量一部好电影的标准吗?

Stata&Python云端课程来啦!

带你了解Stata中的矩阵

Seminar|总统的朋友:政治关联与企业价值
爬虫实战 | 爬取中国天气网

爬虫实战 | 爬取东方财富网经济数据——以居民消费价格指数(CPI)为例

Seminar|媒体关联董事对融资和外部治理的影响神奇的组内交叉合并 PDF分章节转TXT并实现可视化——以胡景北知青日记1971至1978年为例

万物皆可开——shellout妙用

无处不在的系列配置项|从零开始的Pyecharts(三)

使用Python制作自动聊天机器人  

fillin一下,平衡回来~

order命令——快速改变变量顺序的利器 Ajax应用场景——以获取雪球网港股代码及公司名称为例

播放列表中的歌单排行 

在Stata中轻松运用program编写命令

Meta Analysis in Stata17      

芒果TV视频弹幕爬取之《我在他乡挺好的》

Stata中的判断神器——confirm命令

cngdf——名义GDP与实际GDP之间的摆渡船

最近《扫黑风暴》有点火爆!我从豆瓣评论中发现了这些……

随机森林-Random Forest 

复原之神--preserve&restore

合并,“纵”享新丝滑:frameappend & xframeappend
什么是全局配置项?|从零开始的Pyecharts(二)帮你拿下数据可视化|从零开始的Pyecharts 

关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



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

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存