命令提示符找不到指定的文件
本文关键字:文件 找不到 命令提示符 | 更新日期: 2023-09-27 18:15:50
我试图创建一个工具来自动恢复很多数据库,但我卡住了。要么是SQLCMD的路径,要么是命令字符串错误。Win32Exception was unhandled
未处理的System.ComponentModel类型异常。Win32Exception' occurred in System.dll
附加信息:系统无法找到指定的
文件
字符串在命令提示符上工作,但不在我的应用程序上。在命令提示符
中SQLCMD -E -S Ge'sqlexpress -Q "RESTORE DATABASE dbName FROM DISK='C:'app'dbName_300915_000.bak'"
On my application
@"SQLCMD -E -S Ge'sqlexpress -Q ""RESTORE DATABASE dnName FROM DISK='C:'app'dbName_300915_000.bak'"""
我将SQLCMD
替换为完整路径
@"C:'Program Files'Microsoft SQL Server'100'Tools'Binn'SQLCMD.EXE -E -S Ge'sqlexpress -Q ""RESTORE DATABASE dbName FROM DISK='C:'app'dnName_300915_000.bak'"""
仍然不能工作。会是多个SQLCMD
吗?
我的app的代码是
ProcessStartInfo psi = new ProcessStartInfo(@"SQLCMD -E -S Ge'sqlexpress -Q ""RESTORE DATABASE dnName FROM DISK='C:'app'dbName_300915_000.bak'""");
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.CreateNoWindow = true;
var proc = Process.Start(psi);
string s = proc.StandardOutput.ReadToEnd();
textBox2.Text = s;
由于某些原因,这段代码
using System.Diagnostics;
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine("echo Oscar");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
在这里找到https://stackoverflow.com/a/32872174/3424327 works!
我认为每个双引号必须被一组双引号包围。我在RESTORE前面只看到两个双引号。试试这个:
@"SQLCMD -E -S Ge'sqlexpress -Q """RESTORE DATABASE dbName FROM DISK='C:'app'dbName_300915_000.bak'""""