在 VS2008 中创建构建后事件时,我想检查 xcopy 操作的目标是否不是只读的。我发现了一些使用临时变量的代码(http://forums.techguy.org/dos-other/842311-solved-checking-if-file-folder.html),然后检查某些属性。这没用。当我手动打印变量时,它似乎是空的。
if $(PlatformName)==x86 (
echo x86
For /F "Delims=" %%I In ('Attrib $(ProjectDir)..\..\somedir\$(ConfigurationName) \somemoredir\$(TargetName).dll') Do Set _Attribs=%%I
If NOT "%_Attribs:~5,1%"=="R" (
set test="monkey"
echo %test%
echo $(test)
echo nono
echo %_Attribs%
echo $(ProjectDir)..\..\somedir\$(ConfigurationName)\somemoredir\$(TargetName).dll
attrib $(ProjectDir)..\..\somedir\$(ConfigurationName)\somemoredir\$(TargetName).dll
xcopy /Y $(ProjectDir)..\..\..\Runtime\bin\$(TargetName).* $(ProjectDir)..\..\somedir\$(ConfigurationName)\somemoredir\
)
)
输出是:
x86 ECHO 已打开。ECHO 开启。nono ECHO 已打开。
然后是属性消息等等。
echo %test%, echo $(test) 等似乎表明测试变量不包含任何内容。
如何使用环境变量?
(顺便说一句,我真正感兴趣的 _Attribs 也不包含任何内容。)