這是因爲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