批处理问题 怎样把读取内容的变量值赋值给一个变量 例子如下
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! =====此处无值 )
)
求高手解答 展开
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! =====此处无值 )
)
求高手解答 展开
3个回答
展开全部
@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
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
展开全部
1.最后一行的“echo!ipath! ”里 echo和显示内容最好打一个空格,不推荐在echo直接后接 . 或 = 或 \等来代替空格。
2.文件里的文本内容有问题,含有特殊字符如 | & !。如内容为 美眉!美眉我爱你! 时,由于你打开变量延迟,所以 !美眉我爱你! 会以变量处理,事实没有这个变量,所以赋空,显示时只剩下 美眉 了。其他特殊字符同理
2.文件里的文本内容有问题,含有特殊字符如 | & !。如内容为 美眉!美眉我爱你! 时,由于你打开变量延迟,所以 !美眉我爱你! 会以变量处理,事实没有这个变量,所以赋空,显示时只剩下 美眉 了。其他特殊字符同理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询