set str3=%var:*:=%%nums%
echo 删除var中的第一次出现的:号及其前面的所有字符 call echo %%str1:~0,15%% %%str3:~0,30%% echo\\
set str1=%%var:*\set str3=%var:*\
echo 替换var中的第一次出现的^\号及其前面的所有字符为ppp call echo %%str1:~0,15%% %%str3:~0,30%% echo.
set str1=%%var:*\\=ppp%%%num% set str3=%var:*\\=ppp%%nums%
echo 替换var中的第一次出现的\\号及其前面的所有字符为ppp call echo %%str1:~0,15%% %%str3:~0,30%% echo.
set str1=%%var:*:=ppp%%%num% set str3=%var:*:=ppp%%nums%
echo 替换var中的第一次出现的:号及其前面的所有字符为ppp call echo %%str1:~0,15%% %%str3:~0,30%% echo\\ goto :eof
3.再来补充一个我刚积累的一个用法:就是 set /p 变量名=内容 set /p a=我是谁 则结果为:我是谁???? 又学到个:set /p a=<2.txt 将当前目录2.txt中的第一行内容赋值给变量a(这个知识好像前面已经出现过了) 4.dos一些系统的变量:(我们在定义变量是避免用这些变量名来命名变量) 多的要死百度一下会吓死掉,没必要记那么多,记一些常用的,其他的遇到了再说。 像date,time,cd,errorlevel等是必须的。还有就是%0到9这些都是默认的变量。 以下是来自批处理之家中一个对这些变量的解释: 另外还有一些系统变量,他们是代表一个意思,或者一个操作! 他们分别是%0 %1 %2 %3 %4 %5 ......一直到%9 还有一个%* %0 这个有点特殊,有几层意思,先讲%1-%9的意思. %1 返回批处理的第一个参数 %2 返回批处理的第二个参数 %3-%9依此推类 反回批处理参数?到底怎么个返回法? 我们看这个例子,把下面的代码保存为test.BAT然后放到C盘下 @echo off echo %1 %2 %3 %4 echo %1 echo %2 echo %3 echo %4 进入CMD,输入cd c:\\ 然后输入 test.bat 我是第一个参数 我是第二个参数 我是第三个参数 我是第四个参数 注意中间的空格,我们会看到这样的结果: 我是第一个参数 我是第二个参数 我是第三个参数 我是第四个参数 我是第一个参数 我是第二个参数 我是第三个参数 我是第四个参数 对比下代码,%1就是”我是第一个参数” %2就是”我是第二个参数” 怎么样理解了吧! 这些%1和%9可以让批处理也能带参数运行,大大提高批处理功能! 还有一个%* 他是什么呢?他的作用不是很大,只是返回参数而已,不过他是一次返回全部参数的值,不用在输入%1 %2来确定一个个的 例子 @echo off echo %* 同样保存为test.bat 放到C盘 进入CMD,输入cd c:\\ 然后输入 test.bat 我是第一个参数 我是第二个参数 我是第三个参数 我是第四个参数 可以看到他一次把全部参数都显示出来了 好现在开始讲那个比较特殊的%0 %0 这个不是返回参数的值了,他有两层意思! 第一层意思:返回批处理所在绝对路径 例子: @echo off echo %0 pause 保存为test.BAT放在桌面运行,会显示如下结果 \桌面\\test.bat\ 他把当前批处理执行的所在路经打印出来了,这就是返回批处理所在绝对路径的意思 第二层意思:无限循环执行BAT 例子: @echo off net user %0 保存为BAT执行,他就会无限循环执行net user这条命令,直到你手动停止. 龙卷风补充:其实%0就是第一参数%1前面那个参数,当然就是批处理文件名(包括路径)。 以上就是批处理中的一些系统变量,另外还有一些变量,他们也表示一些功能, FOR命令中的那些就是,FOR变量已经说过,就不讲了. 再补充一个我遇到的一个系统变量: %random% 取随机数:0 到32767 之间的任意十进制数字。如果我们要取0到10的随机数的话就: set /a num=%random%% 也就是对这个变量进行求余计算。同理我们可以相同的方法取得任意区间的随机数了。 继续以前的dos命令: 十五. cls 作用:清屏用的没啥好说的,记了很常用 十六. tree 作用:以树图显示文件信息 格式:tree 盘符\\路径 参数 参数: /F 显示每个文件夹中文件的名称。 /A 使用 ASCII 字符,而不使用扩展字符。 例子:用tree查看e:盘并把结果保存到e下的1.txt中 @echo off tree e:>e:\\1.txt echo 成功生成1.txt!请查看 pause>nul 补充:一个技巧今天刚学到的:dos下 Tab 键的妙用 比如我要进入e:\\progres file这个文件夹我们要键入cd /d e:\\progres file很长啊打的累 其实我们只要cd /d e:\\pro然后按下Tab键就会自动帮你补齐了。自己试试看 自学批处理笔记(9) edit fc comp more start 十八. edit 编辑文本文档(这个不多说,批处理中貌似也少用) EDIT [/B] [/H] [/R] [/S] [/ /B - Forces monochrome mode. /H - Displays the maximum number of lines possible for your hardware. /R - Load file(s) in read-only mode. /S - Forces the use of short filenames. / [file] - Specifies initial files(s) to load. Wildcards and multiple filespecs can be given. 十九. fc comp FC [/A] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/U] [/W] [/nnnn] [drive1:][path1]filename1 [drive2:][path2]filename2 FC /B [drive1:][path1]filename1 [drive2:][path2]filename2 /A 只显示每个不同处的第一行和最后一行。 /B 执行二进制比较。 /C 不分大小写。 /L 将文件作为 ASCII 文字比较。 /LBn 将连续不匹配的最大值设为指定 的行数。 /N 在 ASCII 比较上显示行数。 /OFF[LINE] 不要跳过带有脱机属性集的文件。 /T 不要将 tab 扩充到空格。 /U 将文件作为 UNICODE 文字文件比较。 /W 为了比较而压缩空白(tab 和空格)。 /nnnn 指定不匹配处后必须连续匹配的行数。 [drive1:][path1]filename1 指定要比较的第一个文件或第一个文件集。 [drive2:][path2]filename2 指定要比较的第二个文件或第二个文件集。 这是用来比较文件用的,comp也一样,这个我不做详细的介绍。貌似两个都不常用。自行了解。 二十. more (我不做详细介绍,用来显示文本内容) MORE [/E [/C] [/P] [/S] [/Tn] [+n]] < [drive:][path]filename command-name | MORE [/E [/C] [/P] [/S] [/Tn] [+n]] MORE /E [/C] [/P] [/S] [/Tn] [+n] [files] [drive:][path]filename 指定要逐屏显示的文件。 command-name 指定要显示其输出的命令 。 /E 启用扩展功能 /C 显示页面前先清除屏幕 /P 扩展 FormFeed 字符 /S 将多个空白行缩成一行 /Tn 将跳格键扩展成 n 个空格(默认值为 8) 命令行开关可以出现在 MORE 环境变量中。 +n 从第 n 行开始显示第一个文件 files 要显示的文件列表。 用空格分开列表中的文件。 如果扩展的功能已经启用,在 -- More -- 提示处会接受下列 命令: P n 显示下 n 行 S n 略过下 n 行 F 显示下个文件 Q 退出 = 显示行号 ? 显示帮助行