从文本文件导入含变量路径时,%appdata%无法展开的求助
解决批处理读取环境变量路径不展开的问题
核心问题说明
批处理直接读取文本中的%appdata%时,会将其当作普通字符串处理,不会自动展开为实际目录路径;另外注意你配置文件里的键名是makdir=,但代码里匹配的是makedir=(多了一个e),这会导致findstr无法匹配到目标内容,需要先修正拼写保持一致。
两种可行解决方法
方法1:用call命令强制展开变量
call命令会触发批处理重新解析参数中的环境变量,自动将%appdata%展开为实际路径:
for /F "tokens=2 delims==" %%a in ('findstr /I "makdir=" config.txt') do ( call md "%%a" )
(已将代码里的匹配字符串改为makdir=,和配置文件保持一致)
方法2:启用延迟扩展展开变量
开启延迟扩展后,将读取到的路径赋值给变量,再通过!变量!语法触发环境变量展开:
@echo off setlocal enabledelayedexpansion for /F "tokens=2 delims==" %%a in ('findstr /I "makdir=" config.txt') do ( set "target_path=%%a" md "!target_path!" ) endlocal
额外建议:配置文件里的路径用了/作为分隔符,批处理虽兼容,但建议改成Windows标准的\以避免潜在问题,即修改为makdir=%appdata%\test
内容的提问来源于stack exchange,提问作者G Zone
相关产品推荐
相关产品推荐

