本帖最后由 aloha20200628 于 2024-12-30 21:36 编辑
回复 1# hztccy
采用 for /f ... %%i in () do ... 句式获取的返回值其实质是管道文件数据流,如同采用 for /f ... %%i in (1.txt) do set v=%%i 或 set/p v=<1.txt 读取外部文件一样,变量v中包含的%...%字段未经cmd预处理染指,故会作为原始字面量保全在变量v中。楼主可先将
abc%x%zyx
存为1.txt,再用以下代码验证结果 》即变量v中包含的 %x% 并不会被自动展开求值... 同理回到一楼代码,变量 DesktopPath 所包含的 %USERPROFILE% 也不会被自动展开求值... 至于对其再求值的两种解决方法已如二楼所示- @echo off &setlocal &set "x=0"
- echo,x=%x%
- set/p v=<1.txt
- echo,%v%
- echo,再求值
- call set v=%v%
- echo, %v%
- for /f "delims=" %%i in (1.txt) do set "v=%%i"
- echo,%v%
- echo,再求值
- for /f "delims=" %%i in (1.txt) do call set "v=%%i"
- echo, %v%
- pause&exit/b
复制代码
|