中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 高手过来!关于变量的问题!
作者:
标题: 高手过来!关于变量的问题! 上一主题 | 下一主题
mailnler
新手上路





积分 14
发帖 8
注册 2006-11-19
状态 离线
『楼 主』:  高手过来!关于变量的问题!

@echo off
cls
echo 请稍等正在读取ID电影对应表.....
FOR /f "tokens=1,2 delims=," %%i in ('type 全部ID电影对应表.ini ^| find /i ","') do set %%i=%%j
cls
FOR /f %%i in ('type 批量改名目录.ini') do (
FOR /f %%I in ('dir /b %%i') do (
IF DEFINED %%I echo 正在处理文件:%%i%%I  %I% && pause
)
)

关于最上面的for 设置的为%%i  的变量怎么取%%j值的
全部ID电影对应表中有:
17097,黑暗物质之黄金罗盘
14732,伊拉克碎片
56192,秘密的阴谋
56184,头号公敌
也就是设置了17097为变量 值为:黑暗物质之黄金罗盘
可我不知道怎么才能取到%17097%的值!!!批处理里输出时出错!
IF DEFINED %%I echo 正在处理文件:%%i%%I  %I% && pause
这一句我会改成我想做的事!

[ Last edited by mailnler on 2010-5-29 at 22:59 ]

2010-5-29 22:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mailnler
新手上路





积分 14
发帖 8
注册 2006-11-19
状态 离线
『第 2 楼』:  

现在运行后输出的是:
正在处理文件:D:\TEST\17097
请按任意键继续. . .

想要输出的是:
正在处理文件:D:\TEST\17097    黑暗物质之黄金罗盘
请按任意键继续. . .

2010-5-30 00:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by mailnler at 2010-5-29 22:45:
@echo off
cls
echo 请稍等正在读取ID电影对应表.....
FOR /f "tokens=1,2 delims=," %%i in ('type 全部ID电影对应表.ini ^| find /i ","') do set %%i=%%j
cls
FOR /f %%i in ('type 批量改名目录.ini') do (
FOR /f %%I in ('dir /b %%i') do (
IF DEFINED %%I echo 正在处理文件:%%i%%I  %I% && pause
)
)

关于最上面的for 设置的为%%i  的变量怎么取%%j值的
全部ID电影对应表中有:
17097,黑暗物质之黄金罗盘
14732,伊拉克碎片
56192,秘密的阴谋
56184,头号公敌
也就是设置了17097为变量 值为:黑暗物质之黄金罗盘
可我不知道怎么才能取到%17097%的值!!!批处理里输出时出错!
IF DEFINED %%I echo 正在处理文件:%%i%%I  %I% && pause
这一句我会改成我想做的事!

1,为什么不能说说你要具体做什么呢?
2,如果文本(编码为ansi)中只有相关内容,'type 全部ID电影对应表.ini ^| find /i ","'可以直接写成全部ID电影对应表.ini,'type 批量改名目录.ini'也是如此。
3,这里的find不需要/i参数
4,后面两个for 最好使用"delims="以处理可能存在的空格
5,开启变量延迟setlocal enabledelayedexpansion
如果%%i是变量名,则!%%i!为这个变量的值。

[ Last edited by Hanyeguxing on 2010-5-30 at 01:10 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-5-30 01:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mailnler
新手上路





积分 14
发帖 8
注册 2006-11-19
状态 离线
『第 4 楼』:  

@echo off
setlocal enabledelayedexpansion
cls
echo 请稍等正在读取ID电影对应表.....
FOR /f "tokens=1,2 delims=," %%i in ('type 全部ID电影对应表.ini') do set %%i=%%j
cls
FOR /f %%i in ('type 批量改名目录.ini') do (
FOR /f %%I in ('dir /b %%i') do (
IF DEFINED %%I ren %%i%%I !%I%! && pause
)
)

这样还是不行!

全部ID电影对应表中有:
17097,黑暗物质之黄金罗盘
14732,伊拉克碎片
56192,秘密的阴谋
56184,头号公敌

批量改名目录.ini 中有:
D:\TEST
E:\LS
F:\KM
G:\23
要做的事就是查询批量改名目录中存在的 全部ID电影表中的ID的文件夹改名成中文 或是显示成一个文本

2010-5-30 08:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mailnler
新手上路





积分 14
发帖 8
注册 2006-11-19
状态 离线
『第 5 楼』:  

@echo off
setlocal enabledelayedexpansion
cls
echo 请稍等正在读取ID电影对应表.....
FOR /f "tokens=1,2 delims=," %%i in ('type 全部ID电影对应表.ini') do set %%i=%%j
cls
FOR /f %%i in ('type 批量改名目录.ini') do (
FOR /f %%I in ('dir /b %%i') do (
IF DEFINED %%I ren %%i%%I !%%I! && pause
)
)

这样改名是好使的,可是我把IF DEFINED %%I ren %%i%%I !%%I! && pause
改成IF DEFINED %%I echo %%i%%I !%%I! && pause就是不显示后面的中文

2010-5-30 08:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: