VB exe 找不到从 R 调用的配置文件 System/System2
VB exe not finding configuration file calling from R System/System2
我有一个 .exe MapaReporting.exe
,它有一个 .config 文件 MapaReporting.exe.config
,其中指定了一些静态参数(例如 URL)。
如果我 运行 来自 CMD 提示的 .exe,它会执行预期的操作(将文件上传到 SharePoint)。
这对我来说意味着 .exe 和 .config 都在执行它们的工作。
然后我尝试使用相关的 system
指令用 R 调用同一个作业。我所做的事情的本质是由这个简短的脚本提供的(实际的事情涉及一个适当的功能,但下面的几行才是最重要的):
currentDir <- getwd()
setwd("//UKLDNNAS902/RESTRICTED/Fund of Funds/Team/Matteo/R/SPUploader")
exeFile <- "MapaReporting.exe"
exeString <- "PhysicalLocation-C:\DELETEME.xlsx filename-THISISATEST.xlsx FolderName-SFR ReportType-SFR ReportDate-12/12/2016 Fund-NAF PortfolioManager-A566848"
system(paste(exeFile, exeString))
setwd(currentDir)
但我收到以下错误消息:
Site Url is missing in configuration file. at MapaReporting.Program.Main(String[] args)
这表明在使用 CMD 时 .exe 找到了相关的 .config,当我用 R 尝试相同的配置时它会抛出该错误。如您所见,我尝试将系统调用封装在相关文件夹中,我还尝试了 system2
函数。
都没有成功。任何帮助都非常受欢迎!谢谢。
更新:已修改脚本以指向本地文件夹,并根据 Greg 下面的建议将 wait = T
选项添加到 system
语句,没有任何变化。
使用 Process Monitor 实用程序,这些是失败列表:
以下是您可以尝试的一些方法:
- 像这样将系统命令更改为“等待”:
system(paste(exeFile, exeString), wait=T)
- 看起来您正在从网络共享 (//UKLDNNAS902) 运行安装您的可执行文件。如果您将文件复制到本地本地驱动器,然后从那里 运行 它是否有效?这可能表示共享或文件权限存在问题。
- 再次下载并 运行 ProcMon, 运行 您的系统命令,并在 Procmon 控制台中查找与您的 .config 文件相关的任何事件。当您的程序尝试读取此文件时(例如,尝试从错误的位置读取、权限问题等),这可以提示您出了什么问题。如果 .config 文件从未出现在 ProcMon 控制台中,请查找任何表明读取 .config 文件所需的库(或注册表项)加载失败的失败事件。
更新: 我能够通过重新创建一个从 .config 文件读取的 .Net/C# 命令行应用程序来重现您的问题。我能够通过像这样更改命令行来解决问题:
exeFile <- "cmd.exe /C MapaReporting.exe"
作为参考,这是我使用的整个脚本:
currentDir <- getwd()
setwd("C:/SPUploader")
exeFile <- "cmd.exe /C ConsoleApplicationTest.exe"
exeString <- "PhysicalLocation-C:\DELETEME.xlsx filename-THISISATEST.xlsx FolderName-SFR ReportType-SFR ReportDate-12/12/2016 Fund-NAF PortfolioManager-A566848"
system(paste(exeFile, exeString))
setwd(currentDir)
请注意,我 运行 在 RStudio 中以管理员身份执行此操作。
让我知道这是否适合你...
我有一个 .exe MapaReporting.exe
,它有一个 .config 文件 MapaReporting.exe.config
,其中指定了一些静态参数(例如 URL)。
如果我 运行 来自 CMD 提示的 .exe,它会执行预期的操作(将文件上传到 SharePoint)。
这对我来说意味着 .exe 和 .config 都在执行它们的工作。
然后我尝试使用相关的 system
指令用 R 调用同一个作业。我所做的事情的本质是由这个简短的脚本提供的(实际的事情涉及一个适当的功能,但下面的几行才是最重要的):
currentDir <- getwd()
setwd("//UKLDNNAS902/RESTRICTED/Fund of Funds/Team/Matteo/R/SPUploader")
exeFile <- "MapaReporting.exe"
exeString <- "PhysicalLocation-C:\DELETEME.xlsx filename-THISISATEST.xlsx FolderName-SFR ReportType-SFR ReportDate-12/12/2016 Fund-NAF PortfolioManager-A566848"
system(paste(exeFile, exeString))
setwd(currentDir)
但我收到以下错误消息:
Site Url is missing in configuration file. at MapaReporting.Program.Main(String[] args)
这表明在使用 CMD 时 .exe 找到了相关的 .config,当我用 R 尝试相同的配置时它会抛出该错误。如您所见,我尝试将系统调用封装在相关文件夹中,我还尝试了 system2
函数。
都没有成功。任何帮助都非常受欢迎!谢谢。
更新:已修改脚本以指向本地文件夹,并根据 Greg 下面的建议将 wait = T
选项添加到 system
语句,没有任何变化。
使用 Process Monitor 实用程序,这些是失败列表:
以下是您可以尝试的一些方法:
- 像这样将系统命令更改为“等待”:
system(paste(exeFile, exeString), wait=T)
- 看起来您正在从网络共享 (//UKLDNNAS902) 运行安装您的可执行文件。如果您将文件复制到本地本地驱动器,然后从那里 运行 它是否有效?这可能表示共享或文件权限存在问题。
- 再次下载并 运行 ProcMon, 运行 您的系统命令,并在 Procmon 控制台中查找与您的 .config 文件相关的任何事件。当您的程序尝试读取此文件时(例如,尝试从错误的位置读取、权限问题等),这可以提示您出了什么问题。如果 .config 文件从未出现在 ProcMon 控制台中,请查找任何表明读取 .config 文件所需的库(或注册表项)加载失败的失败事件。
更新: 我能够通过重新创建一个从 .config 文件读取的 .Net/C# 命令行应用程序来重现您的问题。我能够通过像这样更改命令行来解决问题:
exeFile <- "cmd.exe /C MapaReporting.exe"
作为参考,这是我使用的整个脚本:
currentDir <- getwd()
setwd("C:/SPUploader")
exeFile <- "cmd.exe /C ConsoleApplicationTest.exe"
exeString <- "PhysicalLocation-C:\DELETEME.xlsx filename-THISISATEST.xlsx FolderName-SFR ReportType-SFR ReportDate-12/12/2016 Fund-NAF PortfolioManager-A566848"
system(paste(exeFile, exeString))
setwd(currentDir)
请注意,我 运行 在 RStudio 中以管理员身份执行此操作。
让我知道这是否适合你...