标题: [特效代码] [已解决]批处理defined命令是什么,有什么用? [打印本页]
作者: Hello123World 时间: 2010-12-18 22:27 标题: [已解决]批处理defined命令是什么,有什么用?
- @echo off&setlocal enabledelayedexpansion
- set /a m=1&echo 计算机中的进程如下:
- for /f "skip=1 tokens=*" %%i in ('wmic process get name') do (
- echo !m! %%i
- set name!m!=%%i
- set /a m+=1)
- set /p n=请输入要结束的进程的序号:
- call set l=%%name!n!%%
- if defined l taskkill /f /im !l!
- pause
复制代码
我记得在符号教学贴中,也出现过defined。- @echo off
- if defined str goto next
- set str=
- set /p str=请把文件拉到本窗口后回车:
- call "%~0" %str%
- pause
- exit
-
- :next
- cls
- echo 本批处理文件完整路径为:"%~0"
- echo 拖到本窗口的文件完整路径为:"%~1"
- 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而直接判断- @echo off
- (for /f "delims=" %%a in (1.txt) do if not defined #%%a set #%%a==&echo %%a)>1_.txt
复制代码
2,当变量名为延迟的变量时,可以不对该变量再扩展而直接判断。- @echo off&setlocal enabledelayedexpansion
- (for /f "delims=" %%a in (1.txt) do (
- set a=%%a
- set a=!a:~1!
- if not defined #!a! set #!a!==&echo !a!
- ))>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:- hh C:\WINDOWS\Help\ntcmds.chm::/percent.htm
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |