[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[特效代码] [已解决]批处理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 编辑 ]

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

评分人数

TOP

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 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

defined判断是否赋值,也就是假设变量不是空值——没有内容的情况。
set /p  a=请输入:
if defined a  (echo  它赋有值) else (echo 空值,请重新输入)
假如把
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

我想再问一个问题,第二个代码中的拖动功能,是依靠哪句代码实现的,不会是依靠set 实现的吧?

TOP

参数%1:
  1. hh C:\WINDOWS\Help\ntcmds.chm::/percent.htm
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表