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

批处理有没有办法能够让变量来作为变量名?

例如1.txt里边写着一行文本:
84838985
要求读取1.txt的这一行文本,然后以''文本内容N‘'作为变量名。也就是:“84838985N”。然后让“84838985N”。自增1,再输出“84838985N”的值。
可以实现吗?
好,我简单点说吧!~这个真是难呵呵。麻烦大家了。比如有两个文本1.txt和2.txt。
1.txt的文本内容如下:
A
B
C
D
E
2.txt的文本内容如下:
****/2
####/3
++++/8
其中的*#+都代表不确定的数字。
要求输出内容如下:
A****
A####
A++++
B****
B####
B++++
C####
C++++
D++++
E++++
而且要按照这个顺序输出,换成别的顺序就不可以了。
就是分别用1.txt里边的行:A
B
C
D
E去匹配2.txt里边的*#+。
*#+被匹配的最多次数是他们各自“/”符号后面的数字值。你仔细看下规律就知道了。

[ 本帖最后由 lj84831253 于 2010-5-15 08:58 编辑 ]

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2 delims=:" %%m in ('findstr /n .* "a.txt"') do (
  4. for /f "tokens=1,2 delims=/" %%a in (b.txt) do (
  5.      if %%m leq %%b echo %%n%%a
  6. )
  7. )
  8. endlocal
  9. pause
复制代码
测试正确
刚开始我思路想错了,不过这个代码要求你的/后面的数不能是08或者09之类的,只能是10进制的数

[ 本帖最后由 sgaizxt001 于 2010-5-15 09:04 编辑 ]
努力学习,努力挣分

TOP

这代码对我来说有点挑战。你把你后面描述的更新到顶楼,别人一看就可以给你写代码,如果要翻完帖子才知道你的意图的话,没多少人帮你
努力学习,努力挣分

TOP

原帖由 hanyeguxing 于 2010-5-14 22:50 发表
楼主没有说明怎么得到的这个结果?
例如为什么A、B输出了三次,而C输出两次,D、E只输出一次?
就是分别用1.txt里边的行:A
B
C
D
E去匹配2.txt里边的*#+。
*#+被匹配的最多次数是他们各自“/”符号后面的数字值。你仔细看下规律就知道了。

TOP

回复 10楼 的帖子

为啥不直接贴代码呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

楼主没有说明怎么得到的这个结果?
例如为什么A、B输出了三次,而C输出两次,D、E只输出一次?
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

好,我简单点说吧!~这个真是难呵呵。麻烦你了。比如有两个文本1.txt和2.txt。
1.txt的文本内容如下:
A
B
C
D
E
2.txt的文本内容如下:
****/2
####/3
++++/8
其中的*#+都代表不确定的数字。
要求输出内容如下:
A****
A####
A++++
B****
B####
B++++
C####
C++++
D++++
E++++
而且要按照这个顺序输出,换成别的顺序就不可以了,

[ 本帖最后由 lj84831253 于 2010-5-14 22:26 编辑 ]

TOP

你把你的意图完整的说明,整个过程是什么?
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

不知道刚才传的附件编码有没有错,,,马虎

TOP

下载附件的rar看下我的代码大侠们应该就能理解了吧!~不过我的代码是不正确的,就是不会修改呵呵。大侠们看看。

TOP

什么是自动增1?要这样?
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (1.txt) do set/a a=a+1&set %%iN=!a!&echo.变量%%iN的值为!%%iN!
  3. pause
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

原帖由 hanyeguxing 于 2010-5-14 21:33 发表
以“内容N”为变量名,以“内容+1N”为值,如果只一行,则:@echo off&setlocal enabledelayedexpansion
set/p p=
首先,不是输出“84838985N”,而是输出“84838985N”的值。就是以要求“84838985N”为变量名,让变量的值自增1。

TOP

原帖由 hanyeguxing 于 2010-5-14 21:33 发表
以“内容N”为变量名,以“内容+1N”为值,如果只一行,则:@echo off&setlocal enabledelayedexpansion
set/p p=
老兄还是没有理解我的意思唉。。。这个好难形容呀,,等等我想想怎么形容仔细点。。。。崩溃。。。

TOP

以“内容N”为变量名,以“内容+1N”为值,如果只一行,则:
  1. @echo off&setlocal enabledelayedexpansion
  2. set/p p=<1.txt&set/a q=p+1&set !p!N=!q!N
  3. echo.变量%p%N的值为!%p%N!&pause
复制代码
如果是多行,则:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (1.txt) do set/a a=%%i+1&set %%iN=!a!N&echo.变量%%iN的值为!%%iN!
  3. pause
复制代码

[ 本帖最后由 hanyeguxing 于 2010-5-14 21:45 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

原帖由 namejm 于 2010-5-14 19:55 发表
  楼主想要的结果只是把文本中的数值+1之后,再在后面添加一个字符N用于输出是吗?如果只是这样的话,就不用把事情弄得如此复杂。
不是把文本中的数值+1,是把文本中的文本内容提取出来,然后以“文本内容+N”作为变量名。再使以“文本内容+N”作为变量名的变量的值加上1。呵呵。

TOP

返回列表