Board logo

标题: [特效代码] [已解决]批处理defined命令是什么,有什么用? [打印本页]

作者: Hello123World    时间: 2010-12-18 22:27     标题: [已解决]批处理defined命令是什么,有什么用?

  1. @echo off&setlocal enabledelayedexpansion
  2. set /a m=1&echo 计算机中的进程如下:
  3. for /f "skip=1 tokens=*" %%i in ('wmic process get name') do (
  4. echo !m!    %%i
  5. set name!m!=%%i
  6. set /a m+=1)
  7. set /p n=请输入要结束的进程的序号:
  8. call set l=%%name!n!%%
  9. if defined l taskkill /f /im !l!
  10. pause
复制代码
我记得在符号教学贴中,也出现过defined。
  1. @echo off
  2. if defined str goto next
  3. set str=
  4. set /p str=请把文件拉到本窗口后回车:
  5. call "%~0" %str%
  6. pause
  7. exit
  8. :next
  9. cls
  10. echo 本批处理文件完整路径为:"%~0"
  11. echo 拖到本窗口的文件完整路径为:"%~1"
  12. goto :eof
复制代码
defined的意思因该是 “确定的”,但这个命令怎么使用,哪位大神能教学一下吗
我想再问一个问题,第二个代码中的拖动功能,是依靠哪句代码实现的,不会是依靠set 实现的吧?

[ 本帖最后由 Hello123World 于 2010-12-20 17:15 编辑 ]
作者: hfg1977    时间: 2010-12-18 23:34

defined 属于if 命令的一个参数(控制类),用于判定 变量 是否已经赋值.
如:
......
call set l=%%name!n!%%
if defined l taskkill /f /im !l!
......

"l" 作为一个变量名,"!l!" 是对该变量的引用.
if defined l  ... 判定 变量"l"  是否已经赋值.
在这里也可以用 if not "!l!" =="" ... 判断变量值是否为空来代替.

由于变量值可能包含特殊字符,if not "!l!" =="" ... 语句在很多情况下会出现错误,
if defined l  ... 语句的应用更为安全.
作者: hanyeguxing    时间: 2010-12-18 23:54

1,当变量名为变量时,可以不开setlocal enabledelayedexpansion而直接判断
  1. @echo off
  2. (for /f "delims=" %%a in (1.txt) do if not defined #%%a set #%%a==&echo %%a)>1_.txt
复制代码
2,当变量名为延迟的变量时,可以不对该变量再扩展而直接判断。
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (1.txt) do (
  3.         set a=%%a
  4.         set a=!a:~1!
  5.         if not defined #!a! set #!a!==&echo !a!
  6. ))>1_.txt
复制代码

[ 本帖最后由 hanyeguxing 于 2010-12-19 00:03 编辑 ]
作者: cjiabing    时间: 2010-12-19 10:41

defined判断是否赋值,也就是假设变量不是空值——没有内容的情况。
set /p  a=请输入:
if defined a  (echo  它赋有值) else (echo 空值,请重新输入)
假如把
作者: Hello123World    时间: 2010-12-19 17:22

我想再问一个问题,第二个代码中的拖动功能,是依靠哪句代码实现的,不会是依靠set 实现的吧?
作者: hanyeguxing    时间: 2010-12-19 17:30

参数%1:
  1. hh C:\WINDOWS\Help\ntcmds.chm::/percent.htm
复制代码





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