找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26706|回复: 7

[文本处理] [已解决]文本文件中含有!和%特殊字符,如何正确读出并赋值给变量

[复制链接]
发表于 2017-12-2 00:26:37 | 显示全部楼层 |阅读模式
本帖最后由 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,中间的!丢失了,
如果要正确赋值,该如何处理?求助大神出手相助!
发表于 2017-12-2 10:30:50 | 显示全部楼层
本帖最后由 lifei259 于 2017-12-4 14:06 编辑

开了延时变量,原来如此。
发表于 2017-12-2 12:20:36 | 显示全部楼层
如果一定要有setlocal enabledelayedexpansion的话

  1. @echo off
  2. setlocal enabledelayedexpansion

  3. ::find /v /c "" <conf.txt >_&set /p n=<_&del _ 2>nul
  4. set n=10
  5. (
  6. for /l %%n in (1,1,!n!) do (
  7.   set line=
  8.   set /p line=
  9.   if defined line if not "!line:~,1!"=="#" set !line!
  10. )) <"conf.txt"

  11. echo 获取完毕
复制代码
发表于 2017-12-2 23:29:26 | 显示全部楼层
用你的代码,WIN10 测试
  1. @echo off
  2. echo 正在获取服务器信息...
  3. for /f "usebackq eol=# delims=" %%x in ("conf.txt") do echo %%x
  4. echo 获取完毕
  5. pause
复制代码
测试结果
 楼主| 发表于 2017-12-3 00:16:19 | 显示全部楼层
用你的代码,WIN10 测试测试结果
yhcfsr 发表于 2017-12-2 23:29



    忘了说了,程序中是开启了变量延迟了。。。
 楼主| 发表于 2017-12-3 00:18:50 | 显示全部楼层
回复 2# lifei259


    打开了变量延迟了,我测试了还是不行!
发表于 2017-12-3 01:08:58 | 显示全部楼层
本帖最后由 yhcfsr 于 2017-12-4 13:35 编辑

回复 5# shootman2
  1. @echo off&setlocal enabledelayedexpansion
  2. echo 正在获取服务器信息...
  3. for /f "usebackq eol=# delims=" %%x in ("conf.txt") do (
  4. endlocal
  5. set "pr=%%x"
  6. setlocal enabledelayedexpansion
  7. echo !pr!
  8. )
  9. echo 获取完毕
  10. pause
复制代码
测试有效
 楼主| 发表于 2017-12-4 00:24:59 | 显示全部楼层
回复 7# yhcfsr


    感谢大神,成功解决!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 03:02 , Processed in 0.017623 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表