如何将文本文件中的目录路径拼接为分号分隔列表并赋值给环境变量
Batch 脚本实现方案
以下脚本直接读取同目录下的text.txt文件,逐行拼接路径,最终输出符合要求的变量:
@echo off setlocal enabledelayedexpansion :: 初始化目标变量为空 set "CONTRAST=" :: 逐行读取text.txt,自动跳过空行,支持带空格的路径 for /f "usebackq delims=" %%a in ("text.txt") do ( if defined CONTRAST ( :: 非首次拼接先加分号 set "CONTRAST=!CONTRAST!;%%a" ) else ( :: 首次赋值直接写入路径 set "CONTRAST=%%a" ) ) :: 可删除:打印拼接结果验证 echo set CONTRAST=!CONTRAST! :: 使变量在脚本执行结束后仍在当前CMD会话生效,不需要可删除 endlocal & set "CONTRAST=!CONTRAST!"
脚本说明:
usebackq参数支持带引号的文件路径,delims=取消空格作为分隔符的默认规则,避免路径含空格时被截断- 自动跳过空行,不会出现连续分号的问题
- 如果
text.txt不在脚本同目录,把括号内的"text.txt"替换为文件的完整路径即可
PowerShell 备选实现方案
如果可以使用PowerShell,实现逻辑更简洁:
# 读取文件所有行,过滤空行后用分号拼接 $contrast = (Get-Content -Path "text.txt" | Where-Object { $_.Trim() -ne '' }) -join ';' # 赋值到当前会话的环境变量 $env:CONTRAST = $contrast # 打印验证结果 Write-Output "set CONTRAST=$contrast"
内容的提问来源于stack exchange,提问作者blur
相关产品推荐
相关产品推荐

