Windows 在构建过程中,如何将assemby版本附加到文件夹的名称?

Windows 在构建过程中,如何将assemby版本附加到文件夹的名称?,windows,batch-file,cmd,delayedvariableexpansion,Windows,Batch File,Cmd,Delayedvariableexpansion,当我发布应用程序时,我会将运行程序所需的所有文件复制到一个文件夹中。我希望该文件夹名称包含程序集版本 我使用的build命令部分有效。我可以将版本号放入一个名为tmpfile的文件中。问题似乎是将该文件中的版本号读取到变量中 if $(ConfigurationName) == Release ( powershell "(Get-Item -path $(TargetPath)).VersionInfo.ProductVersion" > tmpfile set /p

当我发布应用程序时,我会将运行程序所需的所有文件复制到一个文件夹中。我希望该文件夹名称包含程序集版本

我使用的build命令部分有效。我可以将版本号放入一个名为tmpfile的文件中。问题似乎是将该文件中的版本号读取到变量中

if $(ConfigurationName) == Release (
    powershell "(Get-Item -path  $(TargetPath)).VersionInfo.ProductVersion" > tmpfile
    set /p VER=< tmpfile
    echo %VER% > fileversion
    set "DIRNAME=FilterUtilityApp%VER%"
    xcopy /s /y "$(TargetDir)*" "$(SolutionDir)%DIRNAME%\"
    xcopy /y "$(ProjectDir)Docs\*" "$(SolutionDir)%DIRNAME%\Docs\"
)
if$(ConfigurationName)==Release(
powershell“(获取项目-路径$(TargetPath)).VersionInfo.ProductVersion”>tmpfile
设置/p版本=文件版本
设置“DIRNAME=FilterUtilityApp%VER%”
xcopy/s/y“$(TargetDir)*”“$(SolutionDir)%DIRNAME%\”
xcopy/y“$(项目目录)文档\*”$(解决方案目录)%DIRNAME%\Docs\”
)

我已经测试了使用CMD窗口读取和写入VER的代码行,命令有效,fileversion包含版本号。当我运行构建脚本时,fileversion包含“Echo is on”,我假设这意味着VER为空。我的build命令可能还有其他问题,但我在阅读版本号时遇到了困难。

根据aschipfl的评论,这里是工作脚本

if $(ConfigurationName) == Release (
    SETLOCAL EnableDelayedExpansion
    powershell "(Get-Item -path  $(TargetPath)).VersionInfo.ProductVersion" > version
    set /p VER=< version
    del version
    set "DIRNAME=FilterUtilityApp_!VER!"
    xcopy /s /y "$(TargetDir)*" "$(SolutionDir)!DIRNAME!\"
    xcopy /y "$(ProjectDir)Docs\*" "$(SolutionDir)!DIRNAME!\Docs\"
)
if$(ConfigurationName)==Release(
SETLOCAL EnableDelayedExpansion
powershell“(获取项目-路径$(TargetPath)).VersionInfo.ProductVersion”>版本
设置/p版本=

请注意,将%VER%替换为!弗尔

您需要在同一个命令块中写入和读取变量…谢谢,这很有效!我会根据你的建议发布答案