标题: [已解决]变量延迟扩展for语句怎样在内嵌中引用变量? [打印本页]
作者: abcdshenji 时间: 2011-3-10 20:54 标题: [已解决]变量延迟扩展for语句怎样在内嵌中引用变量?
我用下面这段查看屏幕分辨率:- setlocal enabledelayedexpansion
- for /f "skip=1 tokens=*" %%k in ('wmic DESKTOPMONITOR get ScreenWidth^|findstr /i "."') do (
- set w=%%k
- for /f "skip=1 tokens=*" %%k in ('wmic DESKTOPMONITOR get ScreenHeight^|findstr /i "."') do (
- echo 分辨率:!w! X %%k
- )
- )
- setlocal disabledelayedexpansion
复制代码
可是显示结果:
X 1024
就是ScreenWidth的值没显示出来。。我想一定是内嵌FOR中!w!出问题了。。写法或者不正确。。但是奈何水平低。。不知道怎么改。。希望哪位好心人帮忙解释一下下。。谢谢
[ 本帖最后由 abcdshenji 于 2011-3-13 14:29 编辑 ]
作者: weichenxiehou 时间: 2011-3-10 21:21
这样应该行吧?- @echo off
- for /f "skip=1" %%k in ('wmic DESKTOPMONITOR get ScreenWidth^|findstr /i "."') do set "w=%%k"
- for /f "skip=1" %%i in ('wmic DESKTOPMONITOR get ScreenHeight^|findstr /i "."') do set "h=%%i"
- echo 分辨率:%w%*%h%
- pause>nul
复制代码
作者: abcdshenji 时间: 2011-3-10 21:31 标题: 回复 2楼 的帖子
恩。我知道这样可以。。但是我更想知道我上面写的错在什么地方。。这样更能促进我这样的新人的进步啊不是吗。。能劳烦再思考一下吗?。。万分感谢
作者: haiou327 时间: 2011-3-10 22:17
.
@echo off
::setlocal enabledelayedexpansion
for /f "skip=1 tokens=*" %%i in ('wmic DESKTOPMONITOR get ScreenWidth^|findstr /i "."') do (
set w=%%i
for /f "skip=1 tokens=*" %%k in ('wmic DESKTOPMONITOR get ScreenHeight^|findstr /i "."') do (
set h=%%k
)
)
set w=%w: =%
set h=%h: =%
echo 分辨率是:%w%*%h%
pause
[ 本帖最后由 haiou327 于 2011-3-10 22:18 编辑 ]
作者: netbenton 时间: 2011-3-10 22:19
把 "skip=1 tokens=*" 改成 "skip=1 tokens=1" 就可以了
原因是你原来的 %%k 的值含有换行符所造成的。运行下面的代码看看就明白了- @echo off&setlocal enabledelayedexpansion
-
- for /f "skip=1 tokens=*" %%k in ('wmic DESKTOPMONITOR get ScreenWidth^|findstr /i "."') do (
- set w=%%k
- echo;"%%k">aaa.tmp
- for /f "skip=1 tokens=*" %%k in ('wmic DESKTOPMONITOR get ScreenHeight^|findstr /i "."') do (
- echo 分辨率:!w! X %%k
- )
- )
- setlocal disabledelayedexpansion
-
- notepad aaa.tmp
复制代码
作者: batman 时间: 2011-3-10 22:21
一不要嵌套,二不要开启变量延迟。。。
作者: haiou327 时间: 2011-3-10 22:24
..............
.@echo off
setlocal enabledelayedexpansion
for /f "skip=1 tokens=1" %%i in ('wmic DESKTOPMONITOR get ScreenWidth^|findstr /i "."') do (
set w=%%i
for /f "skip=1 tokens=1" %%k in ('wmic DESKTOPMONITOR get ScreenHeight^|findstr /i "."') do (
set h=%%k
)
)
echo 分辨率是:!w!*!h!
pause
作者: abcdshenji 时间: 2011-3-10 23:03 标题: 回复 5楼 的帖子
恩确实是这样的。。我明白了。。是我太粗心了。。谢谢。。也谢谢haiou327大哥
作者: CrLf 时间: 2011-3-12 14:51
- for /f "tokens=1,2" %%a in ('wmic DESKTOPMONITOR get ScreenWidth,screenheight^|findstr "[0-9]"') do echo %%a X %%b
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |