8

私はバッチ初心者で、間違いを犯した可能性があります。しかし、次のビルド後のイベントがあります。

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

2 に答える 2

12

まず第一に、スペースは重要です!私があなたなら「」を削除し、varが使用されている場合にのみ追加します。

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

IF NOT EXIST  "%RELEASEPATH%" MKDIR "%RELEASEPATH%"
于 2012-08-17T12:08:05.433 に答える
4

私の解決策は次のとおりです。

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"
)
于 2012-08-17T13:02:56.027 に答える