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

[其他] (收集代码越多越好)批处理所有限制

请各位老师指点:
       把您知道的所有限制都发上来吧!
比如:
       %RANDOM%变量限制0 和 32767 之间的任意十进制数字 等等
目的:
       希望能让我这样的新手掌握批处理基本的限制要求

[ 本帖最后由 lzwudi 于 2008-10-28 17:15 编辑 ]
帮助别人是快乐
被人帮助是幸福

我觉得random完全不是一个限制,要获取5位数以上的随机数,可以用%random%%random%%random%
CMD所能处理的最大数值 2^31
一个变量所能容纳的最大字符数 8168(?)
等等。。。
若想摆脱限制,最好的方法是自己开放、或者借助第三方工具。
心绪平和,眼藏静谧。

TOP

太好了,又增加知识了
不过我想要的是:

CMD所能处理的最大数值 2^31
一个变量所能容纳的最大字符数 8168(?)
等等。。。

还有其它的吗?????

[ 本帖最后由 lzwudi 于 2008-10-28 21:17 编辑 ]
帮助别人是快乐
被人帮助是幸福

TOP

for命令中是不能使用双引号作为列分隔符的
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

除了%random%外还有其他类似的变量么!
本人已死!不用联系!~
要联系下来联系!~~

TOP

其他类似的什么变量?数字变量?动态变量?
set /?
...
如果命令扩展名被启用,有几个动态环境变量可以被扩展,但
不会出现在 SET 显示的变量列表中。每次变量数值被扩展时,
这些变量数值都会被动态计算。如果用户用这些名称中任何
一个定义变量,那个定义会替代下面描述的动态定义:

%CD% - 扩展到当前目录字符串。

%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。

%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。

%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。

%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。

%CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。

%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

字符串替换

  1. ::不能单独替换 * 星号,但可以把第一个星号及前面的字符串同时替换掉
  2. @echo off
  3. set a=iii*jjj*kkk
  4. set b=%a:**=%
  5. set c=%a:**=hhh*%
  6. echo a的值%a%
  7. echo b的值%b%   把a的首个星号及前面的iii一起替换为空
  8. echo c的值%c% 把a的第一个星号及前面的iii替换为hhh*
  9. pause
复制代码

TOP

回复:jellyhk zqz0012005
好象我的意思您没有理解,我的意思是:
1:一个变量最多可以容纳多少字符
2:批处理的窗口最多能显示多少字符或者行数
3:一次写入文本的字符最多数量是多少
等等,好象都是最多哦^_^
谢谢 谢谢
还有吗?
帮助别人是快乐
被人帮助是幸福

TOP

set 不能单独替换*与=,不过结合for的delims=,可以弥补这个不足~
  1. @echo off
  2. ::把%var%中的*或=删除,只留下abcdef。
  3. set "var=a*b*c*d*e*f" & set "char=*"
  4. :loop
  5. set "str="
  6. echo var替换前: %var%
  7. for /f "delims=" %%a in ("%var%") do call :recur "%%a"
  8. echo var替换后: %str%
  9. echo.
  10. echo %var%| findstr "\*">nul && (
  11.        set "var=a=b=c=d=e=f"
  12.        set "char=="
  13.        goto :loop
  14. )
  15. pause>nul & exit /b
  16. :recur
  17. for /f "tokens=1* delims=%char%" %%a in ("%~1") do (
  18.       set "str=%str%%%a"
  19.       if "%%~b" neq "" call :recur "%%b"
  20. )
复制代码
注意用call传递参数时,要用""将其闭合,因为=是默认分隔符,当然也可以用%*来代替%~1。 delims=不能用"作为分隔符,但set可以,总之它们之间有种互补的关系吧,打破这个限制。
心绪平和,眼藏静谧。

TOP

返回列表