中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 13:41
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS批处理 & 脚本技术(批处理室) » 我发现CMD里的每行字符限制数
可打印版本  3,151 / 9
第1楼 不得不爱 发表于 2006-10-17 21:30
超级版主 发帖 2,044 积分 5,310 来自 四川南充
我发现CMD里的每行字符限制数
我在执行下面的BAT文件时正常

而在执行下面的BAT文件就显示输入行太长。

也就是输入行最长是2048个字!
随便说下,在CMD里执行 SET /A 39%16会得到39除16的余数7,而在BAT文件里执行 SET /A 39%16会得到396,因为在BAT文件里系统启用了默认的%0~~%9 而%1是空的话执行 SET /A 39%16就会得到396,如果要在BAT里取余应该用下面类似的命令来取余:
SET A=16
SET/A 39%%A%
在执行时系统会把%A%替换成16后执行取余操作!
第2楼 无奈何 发表于 2006-10-17 22:20
荣誉版主 发帖 356 积分 1,338
qwe1234567 兄使用的是 2000 吧?
命令行长度限制:


Long Commands
Under Windows NT, the command line is limited to 256 characters.
Under Windows 2000, the command line is limited to 2046 characters.
Under Windows XP, the command line is limited to 8190 characters.

For all OS's NTFS and FAT allows pathnames of up to 260 characters.


参考链接:http://www.ss64.com/nt/cmd.html

在批处理中需要将单百分号替换为双百分号
set /a x=39%%16
第3楼 pengfei 发表于 2006-10-17 22:35
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
xp下也有限制...
第4楼 9527 发表于 2006-10-17 22:54
银牌会员 发帖 438 积分 1,185 来自 北京
set a=16
set /a d=39%%16
SET /a b=39%%a
set /a c=a+1
echo %c% %b% %d%

qwe1234567兄试试上面的代码吧,也许就会明白,SET /A有一个特性,那就是,
例如 : set a=1 那么 set /a a=a+1和set /a %a%+1是一样的
第5楼 pengfei 发表于 2006-10-17 23:11
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
有意思, qwe1234567版主第一楼取余数时忘记了cmd和批处理下"%"与"%%"号的差别.

输入行太长, 这可能是因为系统为环境变量分配的内存空间是有限的, 发现XP下为八千多个字节, 2000下是二千多字节, 还是有区别的.

而pip兄讲的那个set /a的特性, set /a a=a+1, set /a a=%a%+1实际是一样的, 也是set命令的一种处理机制吧.

%a%作为一个环境变量, 一般要用%a%来表示. 而跟在set /a 后不用转义, 也就是说出现字母a, 系统自动将其当作一个字符变量来处理, 然后在内存中跟据变量名获取相应的字符串值.

[ Last edited by pengfei on 2006-10-17 at 23:42 ]
第6楼 electronixtar 发表于 2006-10-17 23:46
铂金会员 发帖 2,672 积分 7,493
的确有限制。上次在一个快捷方式inject脚本就发现了这个问题。很是郁闷
第7楼 lxmxn 发表于 2006-10-18 01:35
版主 发帖 4,938 积分 11,386
恩,有限制...
 
  记得上次执行N个"echo %time%"的批处理时,提示说命令行太长...

  汗一个...
第8楼 vkill 发表于 2006-10-18 05:41
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
xp 没有这个限制的~pip说的对,我试过的昨天刚刚
第9楼 lxmxn 发表于 2006-10-18 06:11
版主 发帖 4,938 积分 11,386
Originally posted by he200377 at 2006-10-18 05:41:
xp 没有这个限制的~pip说的对,我试过的昨天刚刚


  XP没有命令字符长度的限制吗?不会吧?我的怎么限制了?
第10楼 pengfei 发表于 2006-10-18 08:42
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
变量的存储单元总是有大小限制的. 只是多少的问题.
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023