查看原文
其他

Stata-DOS:事半功倍的DOS命令汇总

连享会 连享会 2023-10-24

👇 连享会 · 推文导航 | www.lianxh.cn

连享会 · 2022空间计量专题

作者:严子凯 (中山大学)
邮箱:yanzk@mail2.sysu.edu.cn

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:


目录

  • 1. DOS 命令简介

    • 1.1 什么是 DOS 命令

    • 1.2 DOS 命令的分类

    • 1.3 在 Stata 中使用 DOS 命令

  • 2. 常用 DOS 命令

    • 2.1 md 命令—递归创建文件夹

    • 2.2 tree 命令—制作目录结构

    • 2.3 copy 命令—复制文件

    • 2.4 del 命令—删除文件

    • 2.5 findstr 命令—查找字符串

    • 2.6 move 命令—移动

  • 3. 参考资料

  • 4. 相关推文



1. DOS 命令简介

1.1 什么是 DOS 命令

DOS 是 Disk Operating System (磁盘操作系统) 的缩写,是一套基于磁盘管理的操作系统,在微软推出 Windows2000 之前是最主流的操作系统。DOS 命令不仅以接近自然语言的简洁形式对系统操作,同时也能够有条不紊地监控并管理管理软、硬件资源。

我们可以通过调取 Windows 内置应用 Command 来启用 DOS 指令,并以最简洁、高效的方式完成绝大部分磁盘相关操作 (新建、复制、移动、删除文件/文件夹),因此在复杂文件管理中具有不可替代的优势。

1.2 DOS 命令的分类

DOS 是面向磁盘的操作命令,根据储存位置和数目分为内部命令、外部命令、批处理命令三类。由于该分类对 Stata 操作意义有限,故不再赘述。本文使用更为常用、根据操作对象类型的分类方法,将 DOS 命令归纳为:

  • 目录操作,如 cddirpathtree 等;
  • 文件操作,如 copymorerenfindstr 等;
  • 功能操作,如 clsmoveprintsort 等;
  • 磁盘操作,如 formatlabelshareverify 等;
  • 网络操作,如 ftpnetpingroute 等;
  • 其他。

1.3 在 Stata 中使用 DOS 命令

在 Windows 系统中,我们需要先打开内置应用 Command (快捷键 Windows + R),再输入 DOS 指令执行。在 Stata 中,我们只需要在 DOS 命令前添加英文版本的 ! 即可执行。

2. 常用 DOS 命令

2.1 md 命令—递归创建文件夹

!md 路径

md 命令的用处是创建文件夹,其最大的优势是递归创建文件夹,即同时生成多层级文件。例如,在路径 D:/Stata 下创建文件夹 new_1 的同时,在文件夹 new_1 内创建新文件夹 subnew_1,Stata 自带的 mkdir 命令便会报错,原因是 new_1 文件夹并不存在。

因此,我们需要输入两行 Stata 命令,即第一步生成文件夹 new_1,第二步再生成文件夹 subnew_1。不过,DOS 指令能够一步到位,直接输入如下命令,便可顺利在 Stata 内实现上述目的。

. * Stata 命令错误做法
. mkdir "D:/Stata/new_1/subnew_1"
could not create directory D:/Stata/new_1/subnew_1

. * Stata 命令正确做法
. mkdir "D:/Stata/new_1/"
. mkdir "D:/Stata/new_1/"

. * DOS 命令做法
. !md "D:/Stata/new_1/subnew_1"

2.2 tree 命令—制作目录结构

!tree 路径 [/f] [/a] >> 输出文件

tree 命令能够生成指定工作路径下的所有文件结构。其中,参数 /f 显示每个目录中文件的名称,/a 指定使用文本字符而不是图形字符来显示链接子目录的行,>> 输出重定向操作符,将结果都输出到文件内。

. !tree D:\Stata /f >> output.txt

2.3 copy 命令—复制文件

!copy [/d] [/v] [/n] [/y | /-y] [/z] [/a | /b] <source> [/a | /b] [+<source> [/a | /b] [+ ...]] [<destination> [/a | /b]]

将某个路径下一个或多个文件复制到另一路径下。其中,

  • /d 允许复制的加密文件保存为解密文件;
  • /v 验证新文件是否写正确;
  • /n 复制名称超过八个字符或文件扩展名超过三个字符的文件时,使用简短的文件名;
  • /y 禁止提示确认要覆盖现有目标文件;
  • /-y 提示您确认要覆盖现有目标文件;
  • /z 在可重新启动模式下复制联网文件;
  • /a 指示 ASCII 文本文件;
  • /b 指示二进制文件;
  • <source> 指定要复制文件或一组文件的位置,必选项;
  • <destination> 指定复制文件或一组文件的目标位置,必选项。
. sysuse auto, clear
. save auto, replace
. !copy "D:/Stata/auto.dta" "D:/Stata/new_1/auto.dta"

2.4 del 命令—删除文件

del [drive:][path]fileName[ ...] [/p] [/f] [/s] [/q] [/a[:attributes]]

删除指定文件。其中,

  • drive 指定要删除文件的驱动器;
  • path 指定要删除文件的路径;
  • /p 提示确认是否删除指定文件;
  • /f 强制删除只读文件;
  • /s 从当前目录及其所有子目录中删除指定文件,并显示正在被删除的文件名;
  • /q 不提示确认删除指定文件;
  • /a 根据指定的属性删除文件;
  • attributes 指定文件属性,r 只读,a 存档,s 系统,h 隐藏,前缀 - 表示 “非”。
!del "D:\Stata\new_1\auto.dta" /f/s/q

2.5 findstr 命令—查找字符串

!findstr [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file] [/C:string] [/G:file]
[/D:dir list] [/A:color attributes] [/OFF[LINE]] strings [[drive:][path]filename[ ...]]

在文件中寻找字符串,相关参数如下:

参数描述
/B在一行的开始配对模式
/E在一行的结尾配对模式
/L按字使用搜索字符串
/R将搜索字符串作为一般表达式使用
/S在当前目录和所有子目录中搜索匹配文件
/I指定搜索不分大小写
/X打印完全匹配的行
/V只打印不包含匹配的行
/N在匹配的每行前打印行数
/M如果文件含有匹配项,只打印其文件名
/O在每个匹配行前打印字符偏移量
/P忽略有不可打印字符的文件
/OFF[LINE]不跳过带有脱机属性集的文件
/A:attr指定有十六进位数字的颜色属性
/F:file从指定文件读文件列表
/C:string使用指定字符串作为文字搜索字符串
/G:file从指定的文件获得搜索字符串
/D:dir查找以分号为分隔符的目录列表
strings要查找的文字
符号意义
.通配符:任何字符
*重复:前一字符或类别出现零或零以上次数
^行位置:行的开始
$行位置:行的终点
[class]字符类别:任何在字符集中的字符
[^class]补字符类别:任何不在字符集中的字符
[x-y]范围:在指定范围内的任何字符
\xEscape:元字符 x 的文字用法
<xyz字位置:字的开始
xyz>字位置:字的结束

通配符和重复符规则:从文件 file.txt 中查找任意字符,不包括空字符和空行。

!findstr . file.txt

从文件 file.txt 中查找任意字符,包括空字符和空行。

!findstr .* file.txt

字符集规则:从文件 file.txt 中查找包括任意字符的字符串或行。

!findstr "[a-zA-Z]" file.txt

从文件 file.txt 中查找可匹配 Ma1Y、Mb1Y、Mc1Y、Ma2Y、Mb2Y、Mc2Y、Ma3Y、Mb3Y、Mc3Y 的行。

!findstr "M[abc][123]Y" file.txt

行首、行尾符规则:从文件 file.txt 中查找行首为 step 字符串的行。

!findstr "^step" file.txt

从文件 file.txt 中查找行尾为 step 字符串的行。

!findstr "step$" file.txt

减法规则:要过滤掉 file.txt 中纯数字的行。

!findstr "[^0-9]" file.txt

单词前缀后缀定位规则:从文件 file.txt 中查找以 step 为前缀的字符串的行。

!findstr "\<echo" file.txt

从文件 file.txt 中精确查找单词 step。

!findstr "\<step\>" file.txt

2.6 move 命令—移动

!move [/Y | /-Y] [drive:][path]filename1[,...] destination

既可以移动文件,也可以给文件重命名。具体参数如下:

参数描述
drive:指定移动文件的驱动器
path指定移动文件的路径
destination指定文件的新位置
/Y取消确认覆盖一个现有目标文件的提示
/-Y对确认覆盖一个现有目标文件发出提示
. * 移动文件
. !move "D:\Stata\auto.dta" "D:\Stata\new_1\auto.dta"

. * 移动并重命名文件
. !move "D:\Stata\new_1\auto.dta" "D:\Stata\auto_new.dta"

3. 参考资料

  • 简书:DOS命令大全

  • 爬虫俱乐部:Stata中五条特别好用的DOS命令

  • 手册网:DOS函数参考手册

  • Stanislav Kolenikov, 2012, Scrambled Halton Sequences in Mata, Stata Journal, 12(1): 29–44. -PDF-

  • 脚本之家:批处理命令教学之字符串排序 (sort)

  • IT百科:format命令的怎样写 format命令的格式和参数【详解】

  • 曙光博客:Windows下route命令的用法

  • CSDN:DOS命令FINDSTR

  • CSDN:DOS命令篇(find 和 findstr)

  • CSDN:Net share 命令详解

  • CSDN:DOS上登陆FTP的命令和步骤 (ftp命令全集)

4. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 正则, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

  • 专题:文本分析-爬虫
    • Stata:正则表达式教程
    • 用正则表达式整理文献:正文与文末一一对应
    • Stata爬虫-正则表达式:爬取必胜客
    • Stata: 正则表达式和文本分析
    • 在 Visual Studio (vsCode) 中使用正则表达式
    • 正则表达式语言 - 快速参考
  • 专题:Python-R-Matlab
    • Python: 使用正则表达式从文本中定位并提取想要的内容
  • 专题:Markdown-LaTeX
    • 用VScode正则表达式转换Markdown和LaTeX链接
  • 专题:工具软件
    • Word技巧:如何使用正则表达式高效替换

课程推荐:因果推断实用计量方法
主讲老师:丘嘉平教授
🍓 课程主页https://gitee.com/lianxh/YGqjp

New! Stata 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。


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

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