2017-01-23 300 views
2

我執行以下命令,工作沒有找到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:斑點。第一行是正確的,我編輯了第二行。 –

回答

1
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上。 –