这是因为file system redirector。如果您将程序编译为32位,那么* .bat文件将以32位运行。但是当你双击它时,会运行64位cmd.exe,这会让你看到这样的结果。
如果您不需要支持32位平台,则可以将程序编译为64位。如果您必须将程序编译为32位,则需要禁用MS网站上提到的文件系统重定向,或者使用%windir%\ Sysnative
但是不需要运行这样的bat文件,只需直接运行即可CMD.EXE。以下命令
cmd /c xcopy /S/E "source" "C:\Windows\System32\test.dll*" /y
将在/ c之后运行该命令。请确保运行正确的32位或64位版本的cmd
在32位程序中,如果您不想禁用文件系统重定向,则需要运行正确版本的cmd.exe正确的文件夹使用下面的命令来运行32位cmd.exe的
system("cmd.exe /c xcopy /S/E \"source\" \"%windir%\\Sysnative\\test.dll*\" /y")
或以下运行64位CMD
system("%windir%\\Sysnative\\cmd.exe /c xcopy /S/E \"source\" \"%windir%\\System32\\test.dll*\" /y")
最简单的方法就是改变你的项目为64位并运行正常
system("xcopy /S/E \"source\" \"%windir%\\System32\\test.dll*\" /y")
右侧的VS中,但是从vc运行时它不工作。这是我如何写.. _system(“cmd/c xcopy \”source \“\”C:\ Windows \ System32 \ test.dll * \“/ y”); _ – Terrence
如果您使用system() 'system(“xcopy \”source \“\”C:\ Windows \ System32 \ test.dll * \“/ y”);'就够了。否则,你应该运行'system(“cmd.exe/c xcopy \”source \“\”C:\ Windows \ System32 \ test.dll * \“/ y”);' –
我已经试过了,试着运行32位和64位cmd。但它只会复制到SysWow64 ... – Terrence