XCOPY不使用相对路径和环境变量

问题描述:

我执行以下命令,工作没有找到XCOPY不使用相对路径和环境变量

文件 - dbghelp.dll
0文件复制

echo %VS140COMNTOOLS%产生以下 - 我只是扩大了环境变量:

C:\ Program Files文件(x86)的\微软的Visual Studio 14.0 \ Common7 \工具\

同时,下面的命令作品:

xcopy /R /Y "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\..\IDE\CommonExtensions\Platform\DiagnosticsHub\x86\dbghelp.dll" binaries\msvcr\ 

C: \ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ Tools \ .. \ IDE \ CommonExtensions \ Platform \ DiagnosticsHub \ x86 \ dbghelp.dll
1文件已复制

什么问题?

+0

批处理文件是只包含这一行还是更多? – geisterfurz007

+0

@ geisterfurz007:我目前正在命令行测试,所以没有更多。只是这个'xcopy'。 –

+0

@ geisterfurz007:斑点。第一行是正确的,我编辑了第二行。 –

xcopy /Y /R "%VS140COMNTOOLS%..\IDE\CommonExtensions\Platform\DiagnosticsHub\x86\dbghelp.dll" binaries\msvcr\ 

上面的命令行失败,4例下面的错误消息:未找到

文件 - dbghelp.dll
0文件(多个)复制

  1. 分配给环境变量VS140COMNTOOLS的文件夹路径不会以反斜杠结尾。
    由于echo %VS140COMNTOOLS%在末尾打印带有反斜杠的文件夹路径,因此显然不是这种情况的原因。

  2. 环境变量的字符串值:
    %ProgramFiles(x86)%\Microsoft Visual Studio 14.0\Common7\Tools\
    但这里不是这种情况下,否则会echo %VS140COMNTOOLS%打印字符串。

  3. 分配给环境变量VS140COMNTOOLS的文件夹路径具有一个或多个尾随空格/制表符。

  4. 分配给环境变量VS140COMNTOOLS的文件夹路径以1个或多个前导空格/制表符开头。

有关错误,这将有助于运行echo "%VS140COMNTOOLS%"看看如果输出的第二个和第三个原因:

“C:\ Program Files文件(x86)的\微软的Visual Studio 14。0 \ Common7 \工具\ “

” C:\ Program Files文件(x86)的\微软的Visual Studio 14.0 \ Common7 \工具\”

使用语法set variable=value能很容易导致获取值尾随空格/选项卡分配给环境变量导致在这样的错误中使用。解决方案使用set "variable=value",详细解释在Why is no string output with 'echo %var%' after using 'set var = text' on command line?

为了完整性的环境变量VS140COMNTOOLS与等号,而不是左到变量名和没有尾随空格之后的命令行

set VS140COMNTOOLS="C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\" 

与第一双引号的定义/选项卡将导致执行命令行:

xcopy /Y /R ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\"..\IDE\CommonExtensions\Platform\DiagnosticsHub\x86\dbghelp.dll" binaries\msvcr\ 

但该命令行会导致错误消息:

数无效ö f参数

因此已经双引号的文件夹路径也可以排除为可能的错误原因。

顺便说一下:xcopy的帮助通过在命令提示符窗口中运行xcopy /?输出,列出了源和目标参数后的可选参数。当然可以指定第一个/R /Y,然后指定源文件和目标文件夹,但通常建议使用命令帮助中建议的语法。

+0

很好的答案,但实际上并没有解决问题。 'echo“echo%VS140COMNTOOLS%”'产生'“echo C:\ Program Files文件(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ Tools \”'。 –

+0

这很奇怪。我建议下一步使用免费工具[进程监视器](https://technet.microsoft.com/en-us/sysinternals/processmonitor)从Sysinterals(微软)过滤器设置为__Path包含dbghelp.dll__然后__Include__,运行命令__xcopy__与环境变量引用关联,并在记录的文件系统活动中查找Process Monitor的日志。 – Mofi

+0

这很有趣。碰巧我主要使用PowerShell作为我的日常终端,而我的命令在那里失败。但它在cmd.exe中有效。这是在Windows 10上。 –