2

我是批處理新手,我可能犯了一個錯誤。但是,我有以下生成後事件:後建立SET命令和%變量%錯誤

IF $(ConfigurationName) == Release (
    SET RELEASEPATH = "C:\Users\Synercoder\Documents\Visual Studio 2010\Releases\$(ProjectName)" 
    IF NOT EXIST %RELEASEPATH% (
     GOTO MAKEDIR 
    ) ELSE (
     GOTO DIREXISTS 
    ) 
    :MAKEDIR 
    MKDIR %RELEASEPATH% 
    :DIREXISTS 
    COPY /Y "$(TargetDir)$(ProjectName).dll" "%RELEASEPATH%\$(ProjectName).dll" 
    COPY /Y "$(TargetDir)$(ProjectName).pdb" "%RELEASEPATH%\$(ProjectName).pdb" 
) 

但這種失敗,代碼255。如果我與它的工作原理的實際路徑替換所有%RELEASEPATH%。我查了一下SET的命令,我認爲我使用它的權利......但就像我說我是一個批處理新手。

任何線索爲什麼這在我的情況下失敗?

如果我使用下面的代碼,這是我的輸出:

SET RELEASEPATH = test 
ECHO "%RELEASEPATH%" 
SET RELEASEPATH = "test" 
ECHO "%RELEASEPATH%" 

輸出:

"" 
"" 

回答

4

首先,空間做的事!我會刪除了「如果我是你,只有在使用了var將它們添加

SET RELEASEPATH=C:\Users\Synercoder\Documents\Visual Studio 2010\Releases\$(ProjectName) 

IF NOT EXIST "%RELEASEPATH%" 

MKDIR "%RELEASEPATH%" 
+0

如果我使用SET RELEASEPATH = C:\用戶\ Synerc ...有或沒有引號(「C:\ ...」)沒有關係,仍然是一樣的(見附加示例) – SynerCoder 2012-08-17 12:28:47

+0

您是否刪除了RELEASEPATH和=? – rene 2012-08-17 12:41:52

+0

Damnit!之間的空格?忘了這些空間,你救了我的一天。 – SynerCoder 2012-08-17 13:01:46

2

我的解決辦法如下:

SET RELEASEPATH=%USERPROFILE%\Documents\Visual Studio 2010\Releases\$(ProjectName) 
IF $(ConfigurationName) == Release (
    IF NOT EXIST %RELEASEPATH% (
     MKDIR "%RELEASEPATH%" 
    ) 
    COPY /Y "$(TargetDir)$(ProjectName).dll" "%RELEASEPATH%\$(ProjectName).dll" 
    COPY /Y "$(TargetDir)$(ProjectName).pdb" "%RELEASEPATH%\$(ProjectName).pdb" 
)