[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
为什么非要用长变量名呢?
语块之外的情况可以考虑嵌套,不过不嫌麻烦吗:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "a=^!happyfamily^!"
  4. set happyfamily=abc
  5. echo 整容前:%happyfamily%
  6. set %a:!=%=%a%123
  7. echo 整容后:%happyfamily%
  8. pause
复制代码

TOP

标题

回复 4# raymai97


    那建议用特殊字符@#$之类的既显眼又简洁,话说长代码一定要有注释,否则哪怕变量名再明显,也难以迅速了解代码的逻辑结构

TOP

我也觉得楼主现在的问题主要是算法...

批处理和别的语言或脚本不一样,它是短小简便的,不需要太复杂的变量环境,而且变量长度也会在一定程度上影响运行效率,所以我们一般都用简写,比如我个人就偏爱 a、b、c、m、n、str、var、@1、@2、@3、tmp 这样简洁的变量名。

你可以看看别人写的批,短小的变量名若使用得当,同样可以申明它的功能
批处理获取指定天数之前的日期
http://bbs.bathome.net/thread-3330-1-1.html

至于算法就有点抽象了,一方面考验你对命令的熟悉程度(基础运用以及命令的细节),一方面考验你的想象力,另一方面还考验了你的眼界(所以看到没见过的好算法时就把它记住吧),好的算法要么高效要么简洁,举个例子:
  1. for /f %%a in (1.txt) do (
  2.     for /f %%b in (2.txt) do if %%a==%%b echo %%b
  3. )
复制代码
  1. for /f %%a in (1.txt) do findstr "%%a" 2.txt
复制代码
可以改成:
  1. setlocal enabledelayedexpansion
  2. for /f %%a in (1.txt) do set "str=!str! %%a"
  3. findstr "!str!" 2.txt
复制代码
也可以改成:
  1. (for /f %%a in (1.txt) do echo %%a)>key.txt
  2. findstr /g:key.txt 2.txt
复制代码
后两种都比前两种要高效得多,为什么?因为第一种的循环次数是 "1.txt 有效行数"*"2.txt 有效行数",而第二种里用的 findstr 则是外部命令,每次使用时 cmd 都要开一个名为 findstr.exe 的子进程,所以这两种算法都是比较差的算法。
后两种之所以高效,是因为它们循环次数少,而且外部命令也只是各使用了一次,效率大大提高,这种算法就比前两种要好得多。
1

评分人数

TOP

返回列表