找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25482|回复: 5

[特效代码] [已解决]批处理defined命令是什么,有什么用?

[复制链接]
发表于 2010-12-18 22:27:09 | 显示全部楼层 |阅读模式
  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 编辑 ]
发表于 2010-12-18 23:34: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  ... 语句的应用更为安全.

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

发表于 2010-12-18 23:54:15 | 显示全部楼层
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 编辑 ]
发表于 2010-12-19 10:41:53 | 显示全部楼层
defined判断是否赋值,也就是假设变量不是空值——没有内容的情况。
set /p  a=请输入:
if defined a  (echo  它赋有值) else (echo 空值,请重新输入)
假如把
 楼主| 发表于 2010-12-19 17:22:45 | 显示全部楼层
我想再问一个问题,第二个代码中的拖动功能,是依靠哪句代码实现的,不会是依靠set 实现的吧?
发表于 2010-12-19 17:30:14 | 显示全部楼层
参数%1:
  1. hh C:\WINDOWS\Help\ntcmds.chm::/percent.htm
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 22:36 , Processed in 0.019255 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表