全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
11836 34
2010-02-06
如何在Stata程序中调用DOS程序?如:

@echo off&setlocal enabledelayedexpansion
for %%a in (*j*.txt) do (
copy %%a d:\*.txt
)

1.把以上DOS程序代码用记事本保存为DOS批处理文件:r.bat ,
2.双击文件 r.bat 将把当前目录中所有名字中带有字母j的txt文档Copy至D盘根目录下

问题:

请问如何编写Stata程序调用以上DOS程序,且能够将代码中的加黑部分指定为可变参数?
假设编好的Stata命令为 mytest.ado,在Stata中执行:mytest doc k*, t(E:\) 则把当前目录中所有以k开头的doc文档Copy至E盘根目录下
(PS:个人感觉比较难处理的是上面DOS代码中的循环)

此讨论的意义:

考虑到网络诸多可自由下载的DOS程序原代码,加上DOS对目录、文件和磁盘的强大处理能力,如果能用Stata自由调用DOS程序,应该是有较好的应用意义的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-2-6 11:01:15
以上DOS程序代码仅作例示,

注:可参考10楼和12楼
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-2-6 15:35:34
nice idea, fabulous
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-2-6 15:38:30
Exciting question!!

经测试,可采用如下方式直接执行 dos 批处理程序。

在stata中输入 shell ,则可弹出 DOS 命令窗口,在此处直接输入 r.bat 命令,回车即可。

因此,所有DOS命令都可以通过stata界面执行。使用之前,只需输入 shell 命令转换界面即可。


补充一句,上述过程可直接在stata执行如下命令完成:

shell r.bat

也就是说,stata可以直接执行 DOS 批处理程序。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-2-6 15:48:36
arlionn 发表于 2010-2-6 15:38
Exciting question!!

经测试,可采用如下方式直接执行 dos 批处理程序。

在stata中输入 shell ,则可弹出 DOS 命令窗口,在此处直接输入 r.bat 命令,回车即可。

因此,所有DOS命令都可以通过stata界面执行。使用之前,只需输入 shell 命令转换界面即可。


补充一句,上述过程可直接在stata执行如下命令完成:

shell r.bat

也就是说,stata可以直接执行 DOS 批处理程序。
呵呵,谢谢!
但问题还没有解决,如何指定参数才是关键
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-2-6 16:05:18
我写了个程序,做了个变通,等于是把部分DOS代码“翻译”成了Stata代码,稍显复杂,还有没有更简便的方法?最好是能直接调用DOS程序,又能指定参数的那种。

注:以下代码运行(程序仅在Windows操作系统测试通过)后,执行:mytest dta, f(g) t(d:\),将把当前目录中所有名称中包含字母g的dta文件Copy至D盘根目录中,并统计出Copy的文件总数:

capture prog drop mytest
prog define mytest
    version 9
    syntax anything(name=clist)[, Find(string) To(string)]
    if "`to'"!=""{
        local mydir="`to'\"
    }
    else {
        local mydir=""
    }
    local list: dir "`r(cmd)'" files"*.`clist'"
    local n=0
    foreach x of local list {        
        if strpos("`x'","`find'")!=0{
            local temp="`to'"+"`x'"
            !copy "`x'" "`temp'"
            local n=`n'+1
        }        
    }
    di as result _n "`n' " as txt "files copy to " as result " `to'"
end
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群