【问题标题】:r automatically modify batch filesr 自动修改批处理文件
【发布时间】:2017-09-25 22:19:16
【问题描述】:

我需要按顺序运行使用多个特定于站点的输入文件的模型,为每个站点创建一个输出数据文件,将输出文件移动到结果文件夹并擦除以前的输入文件,以便为下一次运行做好准备。

我使用下面的 Windows 批处理文件来运行。目前我必须手动修改每个站点的路径和文件名。由于我想通过不同的站点按顺序运行它,因此最好对其进行修改,以便输入和输出文件和路径将自动设置为从包含每个站点所有信息的 .csv 提供。

是否可以创建一个 R 代码来自动开发所有 .bat 文件并按顺序加载它们?

@REM  Remove old output files
erase *.bin
erase *.lis
erase *.out

copy "C:\Users\fix\site7_fix.100" "C:\Users\fix.100"
copy "C:\Users\sitepar\site7_sitepar.in" "C:\Users\sitepar.in"
copy "C:\Users\sch\sch1_spinup\site7.sch" "C:\Users\."
copy "C:\Users\wth\site7.wth" "C:\Users\site.wth"
copy "C:\Users\soils_in\site7_soils.in" "C:\Users\soils.in"
copy "C:\Users\site\site7.100" "C:\Users\site.100"

@REM  Run the spinup simulation
erase *.log

model_mlp -s site7 -n site7_spin > site7_spin_log.txt
model_mlp_list100 site7_spin site7_spin outvars.txt

copy site7_spin.lis "C:\Users\output\spinup\vveg_spin.txt"
@REM copy summary.out   "C:\Users\output\spinup\site7_summary_spin.txt"
copy site7_spin_log.txt "C:\Users\logs\site7_spin_log.txt"
@REM copy methane.out   "C:\Users\output\spinup\site7_spin_ch4.txt"

erase site.100
erase site.wth
erase site7_spin.sch
erase *log*

或者,是否可以直接修改批处理文件以顺序运行不同的站点?

【问题讨论】:

    标签: r batch-file


    【解决方案1】:

    这是一个通用示例,说明如何从数据框创建批处理文件,该文件可以从 csv 文件中读取。

    df <- data.frame(MyParamater1 = c('This.bat', 'That.bat'),
               MyParamater2 = c('Thing1', 'thing2'),
               stringsAsFactors = F)
    
    
    for (i in 1:length(df$MyParamater1)) {
      fileConn <- file(df$MyParamater1[i])
      writeLines(c("Hello",
                   paste0("Change to", df$MyParamater2[i]), " Site7"), fileConn)
      close(fileConn)
    }
    

    您也可以读取现有文件并替换值。这是一个通用示例:

    #Read File in
    fileConn <- file("This.bat")
    myNewBat <- readLines(fileConn)
    close(fileConn)
    
    #Replace Values
    myNewBat <- gsub("Site7", "Site8", myNewBat)
    
    #Write new file
    fileConn <- file("MyNewBat.bat")
    writeLines(myNewBat, file("fileConn"))
    close(fileConn)
    

    然后你可以直接从 R 执行你的批处理文件:

    shell.exec("MyNewBat.bat")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      相关资源
      最近更新 更多