批处理脚本集成Git命令写入文件时格式异常问题求助
解决批处理脚本生成带引号的Git描述内容时多余空格的问题
我懂你遇到的糟心情况——明明想让test.txt输出干净的"Git描述内容",结果却多了前后空格。之前用echo|set /p的思路方向是对的,但问题出在没正确捕获git describe的输出,以及命令组合的方式上。
试试这个修改后的脚本,能完美实现你想要的效果:
@echo off setlocal enabledelayedexpansion :: 先清空目标文件,避免残留旧内容 type nul > test.txt :: 写入开头的双引号,无多余空格和换行 echo|set /p=""" >> test.txt :: 捕获git describe的纯输出到变量,避免直接追加带来的格式问题 for /f "delims=" %%g in ('git describe') do set "git_desc=%%g" :: 写入Git描述内容,无换行 echo|set /p="!git_desc!" >> test.txt :: 写入结尾的双引号 echo|set /p=""" >> test.txt endlocal
为什么这个方法能解决问题?
setlocal enabledelayedexpansion:启用延迟环境变量扩展,确保在for循环结束后能正确读取到git_desc变量的内容。for /f捕获输出:直接用call git describe >> test.txt会让命令输出直接追加,但for /f能精准抓取git describe的纯输出,避免任何多余的空格或换行符。echo|set /p无换行写入:这个组合能实现“无换行、无多余空格”的写入,完美解决普通echo命令自动加换行、甚至可能引入空格的问题。
运行这个脚本后,test.txt里的内容就会是你期望的"theGitDescribeContent"格式啦。
内容的提问来源于stack exchange,提问作者J.Chen
相关产品推荐
相关产品推荐

