本帖最后由 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/bCOPY |
|