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

[文件操作] 批处理set变量取得for变量并补位为什么要在%%a后补0?

想做batman的题目,但是遇到了如题所诉困难,请指点一下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2 delims= " %%a in (b.txt) do (
  4.                               set var=%%a000
  5.                               set var=!var:~0,7!
  6.                               echo %%a %%b !var!
  7.                  )
  8. pause
复制代码
因为无法补位,大小判断就失去了意义,杯具
看了2楼的帖子,在%%a变量后补了000,目的就达到了,为什么要补0?

[ 本帖最后由 sgaizxt001 于 2010-1-24 18:21 编辑 ]

在不补零的前提下,你准备用哪种思路去解题?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=-  tokens=1,2,3" %%i in (a.txt) do (
  4.                            for /f "tokens=1,2 delims= " %%a in (b.txt) do (
  5.                               set var=%%a000
  6.                               set var=!var:~0,7!
  7.                               if !var! lss %%i   if !var! gtr %%j  if %%b neq %%k echo %%a %%b >>c.txt                                                                                 )
  8.                                                  )
复制代码
虽然没得出正确结果,但我的解题就是这样

[ 本帖最后由 sgaizxt001 于 2010-1-24 18:53 编辑 ]

TOP

还是无法得出正确结果,少了淦田,并且记录好像比你的多,我再修改看看
查看c.txt后,分析结果得出:
1。大小比较输出结果循环了4次,多了3个结果
2。b.txt里的记录淦田在a.txt里没有,所以for循环没有比较这个记录,所以就没有输出。
但是为什么呢?对于我这个新学bat的来说,实在是无法解决,请指教一下啊

[ 本帖最后由 sgaizxt001 于 2010-1-24 19:10 编辑 ]

TOP

假设一个桶甲中有油和水,而另一个桶乙中只有油;如果硬要取出乙中的水与甲比较哪个多不是行不通吗。(因为乙中没水)

输出结果重复说明本该只比较一次的实际却比较了多次,原因应该是循环的内外层次颠倒了。
批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。

TOP

返回列表