dotfuscator输入/输出路径中的空格

时间:2014-10-16 12:50:16

标签: visual-studio batch-file jenkins dotfuscator

关于dotfuscator和带空格的路径,我有一个非常讨厌的问题。我有一个.bat文件,通过post-build事件调用,语法如下:

call "$(SolutionDir)..\Build\dotf.bat" $(SolutionDir) $(ConfigurationName) $(TargetPath) $(TargetDir). 

.bat文件如下所示:

SET DOTFPATH="%1..\Tools\DotfuscatorProEdition4.13.0\dotfuscator.exe"
SET DEBUG=%2
SET TARGETFILE=%3
SET OUTPUT=%4

if "%DEBUG%" == "Release" (
    %DOTFPATH% /q /in:"%TARGETFILE%" /out:"%OUTPUT%"
) ELSE (
    echo DOTFUSCATOR: Skipped due to debugmode
)

.bat文件接收参数并生成如下命令:

"C:\some\path\to\dotfuscator.exe" /q /in:C:\a\path\toproject\Mydll.dll /out:C:\a\path\toproject\

.bat文件在本地运行良好。但是在构建服务器上,解决方案和项目路径都有空格,如下所示:

"C:\some\path\to\dotfuscator.exe" /q /in:C:\a\path\to project\Mydll.dll /out:C:\a\path\to project\

哪个方面会扰乱争论。所以,我试图用这样的引号括起路径:

"C:\some\path\to\dotfuscator.exe" /q /in:"C:\a\path\to project\Mydll.dll" /out:"C:\a\path\to project\"

这修复了.bat文件和参数解析,但dotfuscator本身现在失败了! Dotfuscator现在抱怨“路径中的非法字符”。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果路径包含空格,那么传递给bat文件的参数应该已经用引号保护。所以你可能正在创建/ in:“”c:\ some path“”这将无效。首先尝试删除bat文件中dotfuscator行上的引号。

或者,尝试更改目录并返回,而不是尝试计算dotfuscator。您还需要将第3个参数从targetpath更改为targetfile

SET DOTFPATH="%1..\Tools\DotfuscatorProEdition4.13.0\dotfuscator.exe"
SET DEBUG=%2
SET TARGETFILE=%3
SET OUTPUT=%4

if "%DEBUG%" == "Release" (
    pushd %OUTPUT%
    %DOTFPATH% /q /in:%TARGETFILE% /out:.
    popd
) ELSE (
    echo DOTFUSCATOR: Skipped due to debugmode
)