标题: [文本处理] [已解决]文本文件中含有!和%特殊字符,如何正确读出并赋值给变量 [打印本页]
作者: shootman2 时间: 2017-12-2 00:26 标题: [已解决]文本文件中含有!和%特殊字符,如何正确读出并赋值给变量
本帖最后由 shootman2 于 2017-12-4 00:25 编辑
我的配置文件conf.txt中的内容为
#服务器信息
sftp.host=192.168.101.100
sftp.port=22
sftp.user=sjjh_qyw
sftp.passwd=gsxt!2017
ssh.host=192.168.101.101
ssh.port=22
ssh.user=gbase
ssh.passwd=gbase%122
读取配置文件的bat脚本为
echo 正在获取服务器信息...
for /f "usebackq eol=# delims=" %%x in ("conf.txt") do set %%x
echo 获取完毕
读取完毕后,打印sftp.passwd变量时,显示结果为gsxt2017,中间的!丢失了,
如果要正确赋值,该如何处理?求助大神出手相助!
作者: lifei259 时间: 2017-12-2 10:30
本帖最后由 lifei259 于 2017-12-4 14:06 编辑
开了延时变量,原来如此。
作者: 0000 时间: 2017-12-2 12:20
如果一定要有setlocal enabledelayedexpansion的话- @echo off
- setlocal enabledelayedexpansion
-
- ::find /v /c "" <conf.txt >_&set /p n=<_&del _ 2>nul
- set n=10
- (
- for /l %%n in (1,1,!n!) do (
- set line=
- set /p line=
- if defined line if not "!line:~,1!"=="#" set !line!
- )) <"conf.txt"
-
- echo 获取完毕
复制代码
作者: yhcfsr 时间: 2017-12-2 23:29
用你的代码,WIN10 测试- @echo off
- echo 正在获取服务器信息...
- for /f "usebackq eol=# delims=" %%x in ("conf.txt") do echo %%x
- echo 获取完毕
- pause
复制代码
测试结果
作者: shootman2 时间: 2017-12-3 00:16
用你的代码,WIN10 测试测试结果
yhcfsr 发表于 2017-12-2 23:29
忘了说了,程序中是开启了变量延迟了。。。
作者: shootman2 时间: 2017-12-3 00:18
回复 2# lifei259
打开了变量延迟了,我测试了还是不行!
作者: yhcfsr 时间: 2017-12-3 01:08
本帖最后由 yhcfsr 于 2017-12-4 13:35 编辑
回复 5# shootman2 - @echo off&setlocal enabledelayedexpansion
- echo 正在获取服务器信息...
- for /f "usebackq eol=# delims=" %%x in ("conf.txt") do (
- endlocal
- set "pr=%%x"
- setlocal enabledelayedexpansion
- echo !pr!
- )
- echo 获取完毕
- pause
复制代码
测试有效
作者: shootman2 时间: 2017-12-4 00:24
回复 7# yhcfsr
感谢大神,成功解决!!!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |