自动检测是否使用 GUI 或批处理模式
Automatically detect if using GUI or batch mode
我在 GUI 和 运行ning 脚本中使用 slurm 集群以批处理模式使用 Stata。文件路径需要在每个用例中以不同方式建立,但我想要一个 .do 文件,其中定义了所有路径。
有没有一种方法可以编写可证伪的 if
语句,如果 运行 从 GUI 中计算为真,如果 运行 批量计算为假?
类似于
glob using_gui = T
if $using_gui == T {
glob dir "/mydir"
} else {
glob dir "D:/mydir"
}
但其中 $using_gui
自动确定为 T
或 F
您是否运行 GUI 在一台机器上而批处理作业在另一台机器上?如果是这样,您可以为此使用 c(username)
,因为两台机器将具有不同的用户名。
例如:
if "`c(username)'" == "MyGUILaptop" {
glob dir "/mydir"
}
else if "`c(username)'" == "MySlurmCluster" {
glob dir "D:/mydir"
}
您可以使用display "`c(username)'"
查看您正在使用的计算机的用户名。查看更多相关信息 here(免责声明:我写了此链接的书)。
正如上面链接的国家主义者问题中所回答的,这可以用 c(mode)
来回答,所以
if "`c(mode)'" == "batch" {
glob dir "/mydir"
}
else {
glob dir "D:/mydir"
}
给猫剥皮的方法有很多种。有关类似选项,请参阅 help creturn
。
我在 GUI 和 运行ning 脚本中使用 slurm 集群以批处理模式使用 Stata。文件路径需要在每个用例中以不同方式建立,但我想要一个 .do 文件,其中定义了所有路径。
有没有一种方法可以编写可证伪的 if
语句,如果 运行 从 GUI 中计算为真,如果 运行 批量计算为假?
类似于
glob using_gui = T
if $using_gui == T {
glob dir "/mydir"
} else {
glob dir "D:/mydir"
}
但其中 $using_gui
自动确定为 T
或 F
您是否运行 GUI 在一台机器上而批处理作业在另一台机器上?如果是这样,您可以为此使用 c(username)
,因为两台机器将具有不同的用户名。
例如:
if "`c(username)'" == "MyGUILaptop" {
glob dir "/mydir"
}
else if "`c(username)'" == "MySlurmCluster" {
glob dir "D:/mydir"
}
您可以使用display "`c(username)'"
查看您正在使用的计算机的用户名。查看更多相关信息 here(免责声明:我写了此链接的书)。
正如上面链接的国家主义者问题中所回答的,这可以用 c(mode)
来回答,所以
if "`c(mode)'" == "batch" {
glob dir "/mydir"
}
else {
glob dir "D:/mydir"
}
给猫剥皮的方法有很多种。有关类似选项,请参阅 help creturn
。