我正在尝试从我的C ++程序中执行dos命令,但是当我向输出文件路径(重定向)添加引号时,该命令不再被执行并立即返回。我在下面展示了一个没有空格的路径示例,但由于路径可能有空格,因此引用shell以便正确理解它我需要解决这个难题 - 而我正试图让最简单的情况首先工作。
即
以下工作:
sprintf(exec_cmd,"\"C:/MySQL Server 5.5/bin/mysqldump.exe\" -u%s -p%s %s > C:/backup.bak",user,password,db_name);
system(exec_cmd);
以下 NOT 工作(注意输出周围的引号):
sprintf(exec_cmd,"\"C:/MySQL Server 5.5/bin/mysqldump.exe\" -u%s -p%s %s > \"C:/backup.bak\"",user,password,db_name);
system(exec_cmd);
我猜它在某处窒息。我在popen尝试了相同的“exec_cmd”但无济于事。
非常感谢任何帮助/建议。
答案 0 :(得分:0)
我认为你的shell(cmd.exe
)不允许重定向到带空格的文件名。我无法让我的command.com
从DOS 6.22接受它(我附近没有cmd.exe
来测试)。
无论如何,您可以使用--result-file
选项将重定向传递给命令本身。
mysqldump ... --result-file="file name" ...