对system()的调用与在命令提示符(cmd)中的行为不同

Calls to system() do not behave the same way as in command prompt (cmd)

本文关键字:cmd system 调用 命令提示符      更新时间:2023-10-16

我需要剪切&通过C++中的代码将一个文件夹粘贴到另一个文件夹中。但有些目录名是有问题的,比如那些带有日语符号的目录名。但是,通过cmd引入的相同命令都可以正常工作。

system("move dirName dirName2");      //work
system("move ディレクトリ dirName2");     //does not work (system cannot find the specified file)
system("move ディレクトリ.txt dirName2"); //work

有趣的是,如果带有日语符号的项目是一个文件而不是一个文件夹,那么即使使用对system()的调用,该操作也可以正常工作。

我不知道为什么对system()的第二次调用不起作用,也不知道如何解决它

附言:我使用的是Windows7。

"move-dirName dirName2",它是const-char*类型,而日语字符不是ASII字符,您应该在这里使用unicode API,尝试:

_wsystem(L"move ディレクトリ dirName2")

您可能需要使用_wsystem来适应宽字符。有关详细信息,请参阅相关的MSDN页面,但调用的语法相同。