[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理命令set /p =<1.txt获取字符串为何出错?

1.txt内容:
文字:sadasd wqwe 2

批处理代码:
  1. @echo off
  2. for /f "tokens=2 delims=:" %%a in ('findstr "文字" 1.txt') do echo %%a>>t1.txt
  3. setlocal enabledelayedexpansion
  4. set /p a=<t1.txt
  5. echo %a%>t2.txt
复制代码
但是生成的t2.txt是空的,t1.txt没问题。
经过测试发现,只要t1.txt第一行结尾是空格+1位数字,上面的问题就会出现。

请给位帮忙解决,多谢

先感谢版主这么快就帮我解决了问题

本人半路出家学批处理,未转义的数字 是什么意思?

版主能解释一下吗?

为何其他情况下我用同样的命令(文本不同)就没问题?

TOP

真感谢版主这么耐心仔细的回答,还有个问题一直困扰我
  1. set /p 变量1=输入:
  2. 判断输入1
  3. set /p 变量2=输入:
  4. 判断输入2
复制代码
如果判断2发现输入错误,需要再次输入,可是屏幕上会多一行”set /p 变量2=输入:"
如何实现,在保留变量1的输入结果前提下,不显示多出来的”set /p 变量2=输入:"这一行?

TOP

  1. @echo off
  2. :sc1
  3. cls
  4. set "name="
  5. set /p name= 输入 名称:
  6. if not defined name goto sc1
  7. echo.&echo.
  8. :sc2
  9. set "age="
  10. set /p age= 输入 年龄:
  11. if not defined age goto sc2
复制代码
代码的原意是每次输入进行判断,错了就重新输入,但是目前发现年龄一旦错误,会反复显示“输入 年龄:”,肯定不能再用cls。

请问如何在屏幕保留姓名输入结果的前提下,如果年龄输入错误,重新输入不会反复显示

TOP

返回列表