使用 DirectoryInfo 时将路径放在引号中的其他方法?
Other way to put a path in quotes when using DirectoryInfo?
我目前正在使用 reg.exe
并且我正在创建一个进程 reg.exe
作为 Process.FileName
。
当我尝试执行 reg.exe 时
REG EXPORT HKLM\SOFTWARE\Intel\IntelAMTUNS D:\Backups\Test.reg
一切正常。
但是一旦我尝试像这样执行它
REG EXPORT HKLM\SOFTWARE\Intel\IntelAMTUNS D:\Backups\Backup folder 1\Test.reg
没有任何反应 - 我知道为什么!目标路径未放在引号中。一旦我这样做,一切都会恢复正常。
我现在的问题是我将所有文件和文件夹路径作为 DirectoryInfo
的实例进行处理。当我将带引号的路径作为字符串传递时,例如像那样
DirectoryInfo targetFolder = new DirectoryInfo("\"D:\Backups\Backup folder 1\Test.reg\"")
我立即收到异常消息,告诉我不支持给定路径的格式。
有没有什么方法可以将路径放在引号中并且仍然可以使用 DirecotryInfo?
我真的需要将我的路径放在引号中 - 否则该命令将无法运行。
下面是一些示例代码:
DirectoryInfo backupPath = new DirectoryInfo("D:\Backups\Backup folder 1\Test.reg");
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "reg.exe";
startInfo.CreateNoWindow = true;
startInfo.Arguments = "REG EXPORT HKLM\SOFTWARE\Intel\IntelAMTUNS " + backupPath.FullName;
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
当我 运行 此代码时,没有任何反应 - 也没有错误或异常。 .reg 文件本身也未创建。
当我尝试 运行 这样的时候
DirectoryInfo backupPath = new DirectoryInfo("\"D:\Backups\Backup folder 1\Test.reg\"");
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "reg.exe";
startInfo.CreateNoWindow = true;
startInfo.Arguments = "REG EXPORT HKLM\SOFTWARE\Intel\IntelAMTUNS " + backupPath.FullName;
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
我收到一个 System.NotSupportedException
告诉我“不支持给定路径的格式。”但实际上我需要将路径放在引号中 - 否则命令本身不起作用...
您在错误的位置添加引号:DirectoryInfo
的构造函数无论如何都会删除它们以规范化路径,因此您可以跳过添加它们:
var backupPath = new DirectoryInfo("D:\Backups\Backup folder 1\Test.reg");
当您将 backupPath.FullName
添加到参数时,您可以在路径周围强制引号,如下所示:
startInfo.Arguments = "REG EXPORT HKLM\SOFTWARE\Intel\IntelAMTUNS \"" + backupPath.FullName + "\"";
我目前正在使用 reg.exe
并且我正在创建一个进程 reg.exe
作为 Process.FileName
。
当我尝试执行 reg.exe 时
REG EXPORT HKLM\SOFTWARE\Intel\IntelAMTUNS D:\Backups\Test.reg
一切正常。
但是一旦我尝试像这样执行它
REG EXPORT HKLM\SOFTWARE\Intel\IntelAMTUNS D:\Backups\Backup folder 1\Test.reg
没有任何反应 - 我知道为什么!目标路径未放在引号中。一旦我这样做,一切都会恢复正常。
我现在的问题是我将所有文件和文件夹路径作为 DirectoryInfo
的实例进行处理。当我将带引号的路径作为字符串传递时,例如像那样
DirectoryInfo targetFolder = new DirectoryInfo("\"D:\Backups\Backup folder 1\Test.reg\"")
我立即收到异常消息,告诉我不支持给定路径的格式。
有没有什么方法可以将路径放在引号中并且仍然可以使用 DirecotryInfo? 我真的需要将我的路径放在引号中 - 否则该命令将无法运行。
下面是一些示例代码:
DirectoryInfo backupPath = new DirectoryInfo("D:\Backups\Backup folder 1\Test.reg");
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "reg.exe";
startInfo.CreateNoWindow = true;
startInfo.Arguments = "REG EXPORT HKLM\SOFTWARE\Intel\IntelAMTUNS " + backupPath.FullName;
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
当我 运行 此代码时,没有任何反应 - 也没有错误或异常。 .reg 文件本身也未创建。
当我尝试 运行 这样的时候
DirectoryInfo backupPath = new DirectoryInfo("\"D:\Backups\Backup folder 1\Test.reg\"");
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "reg.exe";
startInfo.CreateNoWindow = true;
startInfo.Arguments = "REG EXPORT HKLM\SOFTWARE\Intel\IntelAMTUNS " + backupPath.FullName;
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
我收到一个 System.NotSupportedException
告诉我“不支持给定路径的格式。”但实际上我需要将路径放在引号中 - 否则命令本身不起作用...
您在错误的位置添加引号:DirectoryInfo
的构造函数无论如何都会删除它们以规范化路径,因此您可以跳过添加它们:
var backupPath = new DirectoryInfo("D:\Backups\Backup folder 1\Test.reg");
当您将 backupPath.FullName
添加到参数时,您可以在路径周围强制引号,如下所示:
startInfo.Arguments = "REG EXPORT HKLM\SOFTWARE\Intel\IntelAMTUNS \"" + backupPath.FullName + "\"";