中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-05 01:26
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 高手过来!关于变量的问题! 查看 797 回复 4
楼 主 高手过来!关于变量的问题! 发表于 2010-05-29 22:45 ·  中国 吉林 长春 联通
新手上路
积分 14
发帖 8
注册 2006-11-19 03:43
19年会员
UID 71020
性别 男
状态 离线
@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 ]
2 发表于 2010-05-30 00:09 ·  中国 吉林 长春 联通
新手上路
积分 14
发帖 8
注册 2006-11-19 03:43
19年会员
UID 71020
性别 男
状态 离线
现在运行后输出的是:
正在处理文件:D:\TEST\17097
请按任意键继续. . .

想要输出的是:
正在处理文件:D:\TEST\17097 黑暗物质之黄金罗盘
请按任意键继续. . .
3 发表于 2010-05-30 01:05 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
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 ]
4 发表于 2010-05-30 08:22 ·  中国 吉林 长春 联通
新手上路
积分 14
发帖 8
注册 2006-11-19 03:43
19年会员
UID 71020
性别 男
状态 离线
@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的文件夹改名成中文 或是显示成一个文本
5 发表于 2010-05-30 08:28 ·  中国 吉林 长春 联通
新手上路
积分 14
发帖 8
注册 2006-11-19 03:43
19年会员
UID 71020
性别 男
状态 离线
@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就是不显示后面的中文
论坛跳转: