在命令提示符下获取osql输出

本文关键字:osql 输出 获取 命令提示符 | 更新日期: 2023-09-27 18:27:02

我正在使用以下代码执行osql命令,然后获得其输出(如受影响的2行等),但它从未完成。请让我知道我错过了什么。

string sqlFilePath = Helper.GetFilePath(sqlFileName, Environment.CurrentDirectory);
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = @"osql -E -S @Server -d @Database -T -n -i ""@SqlFile"""
           .Replace("@Server", ConfigurationManager.AppSettings["Server"])
           .Replace("@Database", Path.GetFileNameWithoutExtension(DB))
           .Replace("@SqlFile", sqlFilePath);
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();

在命令提示符下获取osql输出

我相信您可能会遇到两个独立的问题:

  • 设置FileNameArguments属性如下:

    p.StartInfo.FileName = "osql.exe";
    p.StartInfo.Arguments = @"-E -S @Server -d @Database -T -n -i ""@SqlFile"""
        .Replace("@Server", ConfigurationManager.AppSettings["Server"])
        .Replace("@Database", Path.GetFileNameWithoutExtension(DB))
        .Replace("@SqlFile", sqlFilePath);
    
  • 您可能还会遇到编码问题。请确保使用Unicode编码(代码页1200)保存.sql文件(这是一个描述问题的问题)。