2013-06-24 46 views
26

我使用'xcopy'命令时出现问题。xcopy不被识别为内部或外部命令,可操作程序或批处理文件

我正在用msbuild构建一个C#项目。在构建结束时,调用批处理文件将我的程序集从调试/发布复制到其他文件夹。

这是问题,我的构建失败,错误日志是'xcopy不被识别为内部或外部命令,可操作程序或批处理文件'。

正确设置了路径,xcopy可以从Windows命令行和Visual Studio命令行(与项目环境一起设置的那个)运行。

我试图在批处理文件中设置路径,但它没有帮助。

有什么建议吗?

我使用Windows 7

干杯:)

回答

36

我遇到同样的问题。

它似乎是Visual Studio中的路径环境变量的问题。

当我增加了一个“路径”语句来我生成事件的开始,它产生了以下的输出:

PATH= 

这似乎表明路径是VS空之内构建环境。

当我指定的完整路径XCOPY这样,问题消失:

%systemroot%\System32\xcopy ... 

我不知道是什么原因造成的Visual Studio失去它的路径。

0

我也有一个xcopy的问题(​​同样的错误信息) - 我用一个非常简单的批处理程序来备份文件到可移动驱动器。已经使用该程序至少5年,从来没有问题。那么昨天xcopy对于Win7是未知的。在每个实例处用%systemroot%\ System32 \ xcopy替换xcopy解决了问题。很奇怪。

10

设置环境变量PATH = %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

6

它发生在我身上我更新了我的Visual Studio扩展,在此期间,Visual Studio中被更新关闭并重新打开之一后。我无法再正确地构建我的项目。我关闭了Visual Studio并重新打开它,问题就消失了。

+0

同样在这里。关闭VS并再次打开它解决了这个问题。 –

5

这不是Windows 7或8的问题。它实际上是更新环境变量(如PATH)的应用程序的问题。 PATH作为“可扩展字符串值”(REG_EXPAND_SZ)存储在注册表中,但许多应用程序将其作为“字符串值”(REG_SZ)写回注册表。如果路径中包含类似%SYSTEMROOT%的内容,那么如果路径在REG_SZ中播放,则不会将其展开到C:\ Windows(或其他任何内容)。

该修复只是简单地从控制面板手动编辑您的路径。您需要进行更改(例如,将路径添加到路径末尾),然后应用它。这将修复您在注册表中的路径为REG_EXPAND_SZ。 (转到系统控制面板并选择高级系统设置,在下面的框中编辑路径环境变量,并且应该修复它。

您可以通过打开命令提示符来判断您的路径是否被破坏键入PATH。您的路径将被列出。如果你能看到什么封闭在%%,那么你的路径没有被扩大。

+0

菲尔现货!在我的情况下,这是在Windows XP上,并且注册表中的条目(HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \ Control \ Session Manager \ Environment \ Path)确实已设置为REG_SZ。从“控制面板”>“系统”>“高级”>“环境变量”中重新建立路径已在注册表中更正了它。当我开始一个新的命令提示符时,路径被正确地“扩展”。 – prairiehat

-2

转到环境变量和正确的路径,包括在最后;。 它会工作,这是根本不涉及操作系统或技术 它适用于我,甚至不需要重新启动操作系统,只需打开新的命令提示符。

1

我刚刚第一次遇到这个问题,我用它将一个Access前端应用程序复制到用户的本地机器上。他们的环境是Windows 7和32-64位机器的组合。我注意到xcopy.exe既在System32也在SysWOW64文件夹中,我想知道是否有一些冲突。所以 - 我将xcopy.exe复制到批处理文件所在的文件夹中,现在它似乎正在工作。只是想我会分享这一点。

艾琳

相关问题