命令提示符找不到指定的文件

本文关键字:文件 找不到 命令提示符 | 更新日期: 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'""""