标题: [文件操作] 批处理set变量取得for变量并补位为什么要在%%a后补0? [打印本页]
作者: sgaizxt001 时间: 2010-1-24 18:17 标题: 批处理set变量取得for变量并补位为什么要在%%a后补0?
想做batman的题目,但是遇到了如题所诉困难,请指点一下:- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1,2 delims= " %%a in (b.txt) do (
- set var=%%a000
- set var=!var:~0,7!
- echo %%a %%b !var!
- )
- pause
复制代码
因为无法补位,大小判断就失去了意义,杯具
看了2楼的帖子,在%%a变量后补了000,目的就达到了,为什么要补0?
[ 本帖最后由 sgaizxt001 于 2010-1-24 18:21 编辑 ]
作者: Batcher 时间: 2010-1-24 18:24
在不补零的前提下,你准备用哪种思路去解题?
作者: sgaizxt001 时间: 2010-1-24 18:44
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=- tokens=1,2,3" %%i in (a.txt) do (
- for /f "tokens=1,2 delims= " %%a in (b.txt) do (
- set var=%%a000
- set var=!var:~0,7!
- if !var! lss %%i if !var! gtr %%j if %%b neq %%k echo %%a %%b >>c.txt )
- )
复制代码
虽然没得出正确结果,但我的解题就是这样
[ 本帖最后由 sgaizxt001 于 2010-1-24 18:53 编辑 ]
作者: sgaizxt001 时间: 2010-1-24 18:47
还是无法得出正确结果,少了淦田,并且记录好像比你的多,我再修改看看
查看c.txt后,分析结果得出:
1。大小比较输出结果循环了4次,多了3个结果
2。b.txt里的记录淦田在a.txt里没有,所以for循环没有比较这个记录,所以就没有输出。
但是为什么呢?对于我这个新学bat的来说,实在是无法解决,请指教一下啊
[ 本帖最后由 sgaizxt001 于 2010-1-24 19:10 编辑 ]
作者: wxcute 时间: 2010-1-24 21:50
假设一个桶甲中有油和水,而另一个桶乙中只有油;如果硬要取出乙中的水与甲比较哪个多不是行不通吗。(因为乙中没水)
输出结果重复说明本该只比较一次的实际却比较了多次,原因应该是循环的内外层次颠倒了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |