Board logo

标题: [其他] 批处理中的感叹号是什么意思? [打印本页]

作者: yustory    时间: 2010-6-21 21:41     标题: 批处理中的感叹号是什么意思?

ren %%i !name:~0,-6!.txt

if !errorlevel!==0

这两句中的 "!"是什么意思

高手解释一下,搜了很久没找到
作者: sgaizxt001    时间: 2010-6-21 22:01

首先这里用!的前提是开启了变量延迟,就是在这句代码前有setlocal enabledelayedexpansion这句代码
第一个!name:~0,-6!.txt表示的是取name变量的前6个字符组成新的文本名字,比如name变量在前面定义为abcdefghijk,那么这里的意思就是把%%i所代表的文本重命名为abcdef.txt
第2个if !errorlevel!==0这里我个人觉得有点多余,可以写成if errorlevel 0就可以了。不过他这样写可能有他的原因,他的代码我也不知道是啥
作者: yustory    时间: 2010-6-21 23:08

代码是用来改文件名称的,其他的都好理解,就是在变量两侧加“!”不明白,加和不加有什么区别?
作者: sgaizxt001    时间: 2010-6-21 23:16

  1. @echo off
  2. set name=abcdefghijk
  3. echo %name% !name! %errorlevel% !errorlevel!
  4. echo.
  5. for %%i in (%name%) do (
  6.   setlocal enabledelayedexpansion
  7.   set str=%%i
  8.   set str=!str:~0,6!
  9.   echo %str% !str! %errorlevel% !errorlevel!
  10.   endlocal
  11. )
  12. pause
复制代码

你运行看看区别
作者: gxuan2008    时间: 2010-6-21 23:30

http://www.bathome.net/thread-1205-1-1.html
请看这个贴。
http://www.bathome.net/thread-2899-1-1.html
再加上这几个贴子或许更容易理解。

[ 本帖最后由 gxuan2008 于 2010-6-21 23:36 编辑 ]




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2