Это потому, что file system redirector. Если вы скомпилируете свою программу как 32 бит, тогда этот * .bat-файл будет работать как 32 бит. Но когда вы дважды щелкните по нему, запустится 64-разрядный cmd.exe, из-за чего вы увидите результат таким образом.
Вы можете скомпилировать программу как 64 бит, если вам не нужна поддержка 32-битной платформы. Если вы должны скомпилировать программу как 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")
спасибо, но он не работает при запуске с 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-бит. но он будет скопирован только в SysWow64 ... – Terrence