批处理问题 怎样把读取内容的变量值赋值给一个变量 例子如下

setdatenum=0for/f"tokens=*"%%iin(.\logDate.txt)do(set/adatenum+=1if!datenum!equ2(seti... set datenum=0
for /f "tokens=*" %%i in (.\logDate.txt) do (
set /a datenum+=1
if !datenum! equ 2 (
set ipath = %%i
echo %%i =====此处有值
echo!ipath! =====此处无值 )

)

求高手解答
补充整段代码: 我已经开启延迟了
@echo off
setlocal enabledelayedexpansion
set datenum=0
set ipath=
for /f "tokens=*" %%i in (.\logDate.txt) do (
set /a datenum+=1
if !datenum! equ 2 (
set ipath = %%i
echo %%i =====此处有值
echo!ipath! =====此处无值 )

)

求高手解答
展开
 我来答
鄙人_焉哉乎也
推荐于2018-03-21 · TA获得超过167个赞
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:131万
展开全部
@echo off
setlocal enabledelayedexpansion
set "datenum=0"
set "ipath="
for /f "tokens=*" %%i in (.\logDate.txt) do (
set /a datenum+=1
if !datenum! equ 2 (
set "ipath=%%i"
rem 给变量赋值的时候最好用引号把变量括起来,因为bat对空格异常敏感
echo.%%i
echo.!ipath!
)
)
pause
追问
楼上回答的很好,那我再问一下  为什么 有的时候不用 引号  没事  ,像赋予变量文本内容(除了数字)  就必须如你说的那样才能显示出来啊
追答
没事的时候是因为你在给变量赋值的时候,变量前后都没有多余的空格...出了问题则反之...
所以初始化变量以及给变量赋值最好是用引号括起来...
即:set "str="
set "str=Message"
echo.%str%
下面是错误的例子:
@echo off
set str ="Hello world"
rem str 变量后面多了一个空格,其实变量不是你预想的"str",而是"str "
echo.%str%
rem 很显然,这个结果就不是你期望的了
rem echo.%str %
rem 把注释去掉才是你想要的结果
pause
twxl1993
2013-05-21 · TA获得超过105个赞
知道答主
回答量:42
采纳率:0%
帮助的人:17.5万
展开全部
1.最后一行的“echo!ipath! ”里 echo和显示内容最好打一个空格,不推荐在echo直接后接 . 或 = 或 \等来代替空格。

2.文件里的文本内容有问题,含有特殊字符如 | & !。如内容为 美眉!美眉我爱你! 时,由于你打开变量延迟,所以 !美眉我爱你! 会以变量处理,事实没有这个变量,所以赋空,显示时只剩下 美眉 了。其他特殊字符同理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ye...1@163.com
2017-07-31 · 超过33用户采纳过TA的回答
知道答主
回答量:206
采纳率:0%
帮助的人:39万
展开全部
@echo off
setlocal enabledelayedexpansion
set "datenum=0"
set "ipath="
for /f "tokens=*" %%i in (.\logDate.txt) do (
set /a datenum+=1
if !datenum! equ 2 (
set "ipath=%%i"
rem 给变量赋值的时候最好用引号把变量括起来,因为bat对空格异常敏感
echo.%%i
echo.!ipath!
)
)
pause
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式