VB及VBA中shell的使用

VB及VBA中shell的使用
VB及VBA中shell的使用

VB 中,常以Shell指令来执行外部程式,然而它在Create该外部process 後,立刻就会回

到vb 的下一行程式,无法做到等待该Process结束时,才执行下一行指令,或是说,无法得知该Process是否已结束,甚者,该Process执行到一半,又该如何中止其执行等等,

这些都不是Shell指令所能控制的,因此我们需使API的帮助来完成。

第一个问题,如何等待shell所Create的process结束後才往後执行vb的程式。

首先要知道的是,每个Process有唯一的一个ProcessID,这是OS给定的,用来区别每个Process,这个Process ID(PID)主要可用来取得该Process相对应的一些资讯,然而要对该Process的控制,却大多透过 Process Handle(hProcess)。VB Shell指令的传回值是PID,而非hProcess,所以我们需透过OpenProcess这个API来取得 hProcess而OpenProcess()的第一

个参数,指的是所取得的hProcess所具有的

能力,像 PROCESS_QUERY_INFORMATION 便是让GetExitCode()可取得hProcess所指的process之状态,而PROCESS_TERMINATE,便是让 TerminateProcess(hProcess..)的指令能够

生效,也就是说,不同参数设定,使hProcess所具有的权限、能力有所不同。取得hProcess後便可以使用WaitForSingleObject()来等待hProcess状态的改变,也就是说,它会等待 hProcess所指的process执行完,这个指令才结束,它

第二个参数所指的是 WaitForSingleObject()所要等待的时间(in milliseconds ),如果超过所指的时间,就TimeOut而结束WaitForSingleObject()的等待。若要它无限的等下去,就设定为INFINITE。

pid = Shell("C:\tools\spe3\pe2.exe", vbNormalFocus)

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)

ExitEvent = WaitForSingleObject(hProcess, INFINITE)

Call CloseHandle(hProcess)

上例会无限等待shell指令create之process结束後,才再做後面的vb指令。有时觉得那会等太久,所以有第二个解决方式:等process结束时再通知vb 就好,即:设定一个公用变数(isDone),当它变成True时代表Shell所Create的Process已结束。当Process还在执行时,GetExitCodeProcess会传&H103给其第二个参数,直到结束时才传另外的数值,如果程式正常结束,那Exitcode = 0,否则就得看它如何

结束了。或许有人在其他地方看到 loop的地方是Loop while Exitcode <> 0,那有一点危险,如果以这个例子来看,您不是用F4来离开pe2而是用右上方 X 的结束dos window那麽,会因为ExitCode的值永远不会是0,而进入无穷的回圈。

Dim pid As Long

pid = Shell("C:\tools\spe3\pe2.exe", vbNormalFocus)

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)

isDone = False

Do

Call GetExitCodeProcess(hProcess, ExitCode)

Debug.Print ExitCode

DoEvents

Loop While ExitCode = STILL_ALIVE

Call CloseHandle(hProcess)

isDone = True

另外,如果您的shell所Create的程式,有视窗且为立刻Focus者,可另外用以下的方式Dim pid As Long

Dim hwnd5 As Long

pid = Shell("c:\tools\spe3\pe2.exe", vbNormalFocus)

hwnd5 = GetForegroundWindow()

isDone = False

Do While IsWindow(hwnd5)

DoEvents

Loop

isDone = True

而如何强迫shell所Create的process结束呢,那便是

Dim aa As Long

If hProcess <> 0 Then

aa = TerminateProcess(hProcess, 3838)

End If

hProcess便是先前的例子中所取得的那个Process Handle, 3838所指的是传给GetExitCodeProcess()中的第二参数,这是我们任意给的,但最好不要是0,因为0一般是代表正常结束,当然这样设也不会有错。当然不可设&H103,以这个例子来看,如果程式正处於以下的LOOPDo

Call GetExitCodeProcess(hProcess, ExitCode)

Debug.Print ExitCode

DoEvents

Loop While ExitCode = STILL_ALIVE

Debug.print ExitCode

而执行了 TerminateProcess(hProcess, 3838)那会看到ExitCode = 3838。然而,这个方式在win95没问题,在NT中,可能您要在OpenProcess()的第一个参数要更改成

PROCESS_QUERY_INFORMATION Or PROCESS_TERMINATE 这样才能Work。不过良心的建议,非到最後关头,不要使用TerminateProcess(),因不正常的结束,往往许多程式结束前所要做的事都没有做,可能造成Resource的浪费,甚者,下次再执行某些程式时会有问题,例如:本人常使用MS-dos Shell Link 的方式执行一程式,透过Com port与大电脑的联结,如果Ms-dos Shell Link 不正常结束,下次再想Link时,会发现too Many Opens,这便是一例。

另外,有人使用Shell来执行.bat档,即:

pid = Shell("c:\aa.bat", vbNormalFocus)

可是却遇上aa.bat结束了,但ms-dos的Window却仍活着,那可以用以下的方式来做pid = Shell("c:\https://www.360docs.net/doc/512804337.html, /c c:\aa.bat", vbNormalFocus)

那是执行https://www.360docs.net/doc/512804337.html,,而https://www.360docs.net/doc/512804337.html,指定执行c:\aa.bat 而且结束时自动Close 所有程式如下:

Private Declare Function OpenProcess Lib "kernel32" _

(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _

ByVal dwProcessId As Long) As Long

Private Declare Function WaitForSingleObject Lib "kernel32" _

(ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" _

(ByVal hObject As Long) As Long

Private Declare Function GetExitCodeProcess Lib "kernel32" _

(ByVal hProcess As Long, lpExitCode As Long) As Long

Private Declare Function TerminateProcess Lib "kernel32" _

(ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Declare Function GetForegroundWindow Lib "user32" () As Long

Private Declare Function IsWindow Lib "user32" _

(ByVal hwnd As Long) As Long

Const PROCESS_QUERY_INFORMATION = &H400

Const STILL_ALIVE = &H103

Const INFINITE = &HFFFF

Private ExitCode As Long

Private hProcess As Long

Private isDone As Long

Private Sub Command1_Click()

Dim pid As Long

pid = Shell("C:\tools\spe3\pe2.exe", vbNormalFocus) hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid) isDone = False

Do

Call GetExitCodeProcess(hProcess, ExitCode)

Debug.Print ExitCode

DoEvents

Loop While ExitCode = STILL_ALIVE

Call CloseHandle(hProcess)

isDone = True

End Sub

Private Sub Command2_Click()

Dim pid As Long

Dim ExitEvent As Long

pid = Shell("C:\tools\spe3\pe2.exe", vbNormalFocus) hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid) ExitEvent = WaitForSingleObject(hProcess, INFINITE)

Call CloseHandle(hProcess)

End Sub

Private Sub Command3_Click()

Dim aa As Long

If hProcess <> 0 Then

aa = TerminateProcess(hProcess, 3838)

End If

End Sub

Private Sub Command4_Click()

Dim pid As Long

Dim hwnd5 As Long

pid = Shell("c:\tools\spe3\pe2.exe", vbNormalFocus)

hwnd5 = GetForegroundWindow()

isDone = False

Do While IsWindow(hwnd5)

DoEvents

Loop

isDone = True

End Sub

Private Sub Command5_Click()

Dim pid As Long

'pid = Shell("c:\windows\command\xcopy c:\aa.bat a:", vbHide) pid = Shell("c:\https://www.360docs.net/doc/512804337.html, /c c:\aa.bat", vbNormalFocus) End Sub

VLOOKUP函数的使用方法

VLOOKUP函数的使用方法(入门级) 一、入门级 VLOOKUP是一个查找函数,给定一个查找的目标,它就能从指定的查找区域中查找返回想要查找到的值。它的基本语法为: VLOOKUP(查找目标,查找范围,返回值的列数,精确OR模糊查找) 下面以一个实例来介绍一下这四个参数的使用 例1:如下图所示,要求根据表二中的姓名,查找姓名所对应的年龄。 公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0) 参数说明: 1 查找目标:就是你指定的查找的内容或单元格引用。本例中表二A列的姓名就是查找目标。我们要根据表二的“姓名”在表一中A列进行查找。 公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0) 2 查找范围(VLOOKUP(A13,$B$2:$D$8,3,0) ):指定了查找目标,如果没有说从哪里查找,EXCEL肯定会很为难。所以下一步我们就要指定从哪个范围中进行查找。VLOOKUP的这第二个参数可以从一个单元格区域中查找,也可以从一个常量数组或内存数组中查找。本例中要从表一中进行查找,那么范围我

们要怎么指定呢?这里也是极易出错的地方。大家一定要注意,给定的第二个参数查找范围要符合以下条件才不会出错: A 查找目标一定要在该区域的第一列。本例中查找表二的姓名,那么姓名所对应的表一的姓名列,那么表一的姓名列(列)一定要是查找区域的第一列。象本例中,给定的区域要从第二列开始,即$B$2:$D$8,而不能是$A$2:$D$8。因为查找的“姓名”不在$A$2:$D$8区域的第一列。 B 该区域中一定要包含要返回值所在的列,本例中要返回的值是年龄。年龄列(表一的D列)一定要包括在这个范围内,即:$B$2:$D$8,如果写成$B $2:$C$8就是错的。 3 返回值的列数(B13 =VLOOKUP(A13,$B$2:$D$8,3,0))。这是VLOOKU P第3个参数。它是一个整数值。它怎么得来的呢。它是“返回值”在第二个参数给定的区域中的列数。本例中我们要返回的是“年龄”,它是第二个参数查找范围$B$2:$D$8的第3列。这里一定要注意,列数不是在工作表中的列数(不是第4列),而是在查找范围区域的第几列。如果本例中要是查找姓名所对应的性别,第3个参数的值应该设置为多少呢。答案是2。因为性别在$B$2:$D$8的第2列中。 4 精确OR模糊查找(VLOOKUP(A13,$B$2:$D$8,3,0) ),最后一个参数是决定函数精确和模糊查找的关键。精确即完全一样,模糊即包含的意思。第4个参数如果指定值是0或FALSE就表示精确查找,而值为1 或TRUE时则表示模糊。这里兰色提醒大家切记切记,在使用VLOOKUP时千万不要把这个参数给漏掉了,如果缺少这个参数默为值为模糊查找,我们就无法精确查找到结果了。 VLOOKUP函数的使用方法(初级篇)一、VLOOKUP多行查找时复制公式的问题 VLOOKUP函数的第三个参数是查找返回值所在的列数,如果我们需要查找返回多列时,这个列数值需要一个个的更改,比如返回第2列的,参数设置为2,如果需要返回第3列的,就需要把值改为3。。。如果有十几列会很麻烦的。那么能不能让第3个参数自动变呢?向后复制时自动变为2,3,4,5。。。 在EXCEL中有一个函数COLUMN,它可以返回指定单元格的列数,比如 =COLUMNS(A1)返回值1 =COLUMNS(B1)返回值2

VLOOKUP函数的使用方法(图解说明_很详细)

VLOOKUP函数调用方法如下:(本次以提取RRU挂高数据为例) 一、本次涉及的相关文档。 1.《某地区TD宏站现场勘测数据汇总表》如表1-1,共1000多站,本次共列出104个站点的信息: 查看原文档请双击图标:某地区TD宏站现场 查勘数据汇总表,表1-1抓图如下: 2.某工程报价单,共30个宏站,如表1-2(本报价单其他信息均删除,只保留了站点名) 查看原文档请双击图标:某工程报价单.xlsx ,表1-2抓图如下: 二、本次我们以从表1-1中提取表1-2中30个站点的RRU挂高为例,具体步骤如下: 1.先在表1-2中增加“RRU挂高”这一列,然后先提取“某城关水泵厂南”的RRU挂高。操作方法为双击下图所示灰色表格,然后鼠标左键单击列表上面的fx插入函 数。 2.点fx后弹出如下图标,在下拉列表中选择“VLOOKUP”,点确定。

3.点确定后,弹出VLOOKUP函数调用表,包含4个部分(lookup_value、Table_array、C ol_index_num、Range_lookup)。 lookup_value:需要在数据表首列进行搜索的值,本次值为表1-1中的位置B2,用 鼠标单击表1-1中的“某城关水泵厂南”,即可自动输入。。 Table_array:需要在其中搜索数据的信息表,即在表1-2中选择一个搜索区域, 注意所选区域第一列必须是与Lookup_value中查找数值相匹配的 列(本次表1-1中的B列),最后一列必须大于等于RRU挂高那一列 (大于等于C列),至于下拉行数肯定要大于等于106行。如下图: 选择相关区域后,VLOOKUP表中的Table_array会自动输入表1-1中所选区域,如 下图:

Linux find命令常见用法汇总

Linux find命令常见用法汇总 导读:Linux系统中查找文件的命令式find,find命令具有强大的功能,能够提供多种查找条件,下面小编就给大家带来Linux中find命令的常见用法汇总,一起来学习下吧。 ·find path -option [-print ][-exec -ok command ]{} \; find命令的参数; pathname:find命令所查找的目录路径。例如用。来表示当前目录,用/来表示系统根目录。 -print:find命令将匹配的文件输出到标准输出。 -exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为‘command’ { } \;,注意{ }和\;之间的空格。 -ok:和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。 #-print 将查找到的文件输出到标准输出 #-exec command {} \; —–将查到的文件执行command操作,{} 和\;之间有空格 #-ok 和-exec相同,只不过在操作前要询用户 例:find 。-name .svn | xargs rm -rf ==================================================== -name filename #查找名为filename的文件 -perm #按执行权限来查找 -user username #按文件属主来查找

-group groupname #按组来查找 -mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前-atime -n +n #按文件访问时间来查GIN:0px“》 -ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在 -nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存 -newer f1 !f2 找文件,-n指n天以内,+n指n天以前 -ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在 -nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存 -newer f1 !f2 #查更改时间比f1新但比f2旧的文件 -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件 -size n[c]#查长度为n块[或n字节]的文件 -depth #使查找在进入子目录前先行查找完本目录 -fstype #查更改时间比f1新但比f2旧的文件 -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件 -size n[c]#查长度为n块[或n字节]的文件 -depth #使查找在进入子目录前先行查找完本目录 -fstype #查位于某一类型文件系统中的文件,这些文件系统类型通常可在/etc/fstab中找到 -mount #查文件时不跨越文件系统mount点 -follow #如果遇到符号链接文件,就跟踪链接所指的文件 -cpio %; #查位于某一类型文件系统中的文件,这些文件系统类型通常可在/etc/fstab中找到 -mount #查文件时不跨越文件系统mount点 -follow #如果遇到符号链接文件,就跟踪链接所指的文件 -cpio #对匹配的文件使用cpio命令,将他们备份到磁带设备中 -prune #忽略某个目录 ===================================================== $find ~ -name ”*.txt“ -print #在$HOME中查.txt文件并显示 $find 。-name ”*.txt“ -print $find 。-name ”[A-Z]*“ -print #查以大写字母开头的文件 $find /etc -name ”host*“ -print #查以host开头的文件 $find 。-name ”[a-z][a-z][0–9][0–9].txt“ -print #查以两个小写字母和两个数字开头的txt文件 $find 。-perm 755 -print $find 。-perm -007 -exec ls -l {} \; #查所有用户都可读写执行的文件同-perm 777 $find 。-type d -print $find 。!-type d -print $find 。-type l -print $find 。-size +1000000c -print #查长度大于1Mb的文件

vlookup函数使用方法

vlookup函数使用方法 【例1】查找个人信息 =VLOOKUP($B18,$C$7:$H$15,COLUMN(B1),0) 注:Column(b1)的结果是2,当公式向右复制时可以生成3,4,5,.. 【例2】合并两个表格 F2单元格公式 =VLOOKUP(B2,$B$14:$F$22,MATCH(F$1,$B$13:$F$13,0)) 公式说明:用Match函数查找表1的标题在表2中的位置 【例3】让两个表格同类商品排序完全一样 F2单元格公式 =IFERROR(VLOOKUP($B2,$B$12:$D$16,COLUMN(A1),),"")

公式说明:IFERROR函数用来屏蔽错误值 【例4】制作工资条 =VLOOKUP($G96,$A$96:$E$104,COLUMN(B1),) 公式说明:根据序号从工资表中查找对应的信息 【例5】合并N个日报表 有N个日报表,A列为销售员(每个表的销售员顺序人数不一定相同),B列是销量。现需要合并到一个表中。 由于顺序和人员不同,直接粘贴肯定不行。难道要一个一个的手工填写吗?当然不用,一个Vlookup公式即可。 B3公式: =IFERROR(VLOOKUP($A3,INDIRECT(B$2&"!A:B"),2,0),"") 【例6】模糊查找产品名称(包含查找)

=VLOOKUP("*"&F41&"*",$B$41:$D$47,3,0) 注:*是通配符,代表任意多个字符 【例7】带特殊符合的字符查找 =VLOOKUP(SUBSTITUTE(F52,"~","~~"),B$52:C$56,2,0) 注:由于~ * ?在公式中有通配符用法,遇到被查找的字符串中含有这3个字符就用Substitute替换为~~、~*和~? 【例8】逆向查找 =VLOOKUP(G61,IF({1,0},C61:C69,B61:B69),2,) 公式说明: 本公式只做了解,遇到逆向查找,建议使用Index+Match 函数。 =INDEX(B60:B69,MATCH(G61,C60:C69,0)) 【例9】16年与17年单价核对,表格核对(带通配符),结果显示多N 或少N

find和xargs的组合用法

find和xargs的組合用法 一、find 命令格式 1、find命令的一般形式为; find pathname -options [-print -exec -ok ...] 2、find命令的参数; pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 -print:find命令将匹配的文件输出到标准输出。 -exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。 -ok:和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。 3、find命令选项 -name 按照文件名查找文件。 -perm 按照文件权限来查找文件。 -prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find 命令忽略。 -user 按照文件属主来查找文件。 -group 按照文件所属的组来查找文件。 -mtime -n +n 按照文件的更改时间来查找文件,- n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n 天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。 -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。 -nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。 -newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。 -type 查找某一类型的文件,诸如: b - 块设备文件。 d - 目录。 c - 字符设备文件。 p - 管道文件。 l - 符号链接文件。 f - 普通文件。 -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。

EXCEL函数公式VLOOKUP的用法

EXCEL函数公式VLOOKUP的用法 VLOOKUP函数 在表格或数值数组的首列查找指定的数值,并由此返回表格或数组中该数值所在行中指定列处的数值。 这里所说的“数组”,可以理解为表格中的一个区域。数组的列序号:数组的“首列”,就是这个区域的第一纵列,此列右边依次为第2列、3列……。假定某数组区域为B2:E10,那么,B2:B10为第1列、C2:C10为第2列……。 语法: VLOOKUP(查找值,区域,列序号,逻辑值) “查找值”:为需要在数组第一列中查找的数值,它可以是数值、引用或文字符串。 “区域”:数组所在的区域,如“B2:E10”,也可以使用对区域或区域名称的引用,例如数据库或数据清单。 “列序号”:即希望区域(数组)中待返回的匹配值的列序号,为1时,返回第一列中的数值,为2时,返回第二列中的数值,以此类推;若列序号小于1,函数VLOOKUP 返回错误值 #VALUE!;如果大于区域的列数,函数VLOOKUP返回错误值 #REF!。

“逻辑值”:为TRUE或FALSE。它指明函数 VLOOKUP 返回时是精确匹配还是近似匹配。如果为 TRUE 或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于“查找值”的最大数值;如果“逻辑值”为FALSE,函数 VLOOKUP 将返回精确匹配值。如果找不到,则返回错误值 #N/A。如果“查找值”为文本时,“逻辑值”一般应为 FALSE 。另外: ·如果“查找值”小于“区域”第一列中的最小数值,函数VLOOKUP 返回错误值 #N/A。 ·如果函数 VLOOKUP 找不到“查找值” 且“逻辑值”为FALSE,函数 VLOOKUP 返回错误值 #N/A。 下面举例说明VLOOKUP函数的使用方法。 假设在Sheet1中存放小麦、水稻、玉米、花生等若干农产品的销售单价: A B 1 农产品名称单价 2 小麦 0.56 3 水稻 0.48 4 玉米 0.39

15个极好的Linux find命令示例

前阵子,我们审查了15件实事find命令的例子(第一部分)。查找命令可以做很多比只是在寻找基于名称的文件(第2部分)在这篇文章中,让我们来讨论15高级find命令的例子,包括-根据它访问,修改或改变的时间查找文件,查找文件相比之下,执行操作找到的文件等。 基于访问/修改/更改时间查找文件 你可以找到基于以下三个文件的时间属性的文件。 1.访问时间的文件。文件访问时,访问时间得到更新。 2.的文件的修改时间。文件内容修改时,修改时间得到更新。 3.更改文件的时间。更改时间时,被更新的inode数据的变化。 在下面的例子中,min选项之间的差异和时间选项是参数。 ?分论点将它的参数为分钟。例如,60分钟(1小时)= 60分钟。 ?时间参数,将它的参数为24小时。例如,时间2 = 2 * 24小时(2天)。 ?虽然这样做的24个小时计算,小数部分都将被忽略,所以25小时为24小时,和47小时取为24小时,仅48小时为48小时。要获得更清晰的参考atime的部分find 命令的手册页。 例1:找到在1个小时内被更改的文件 想要通过文件修改时间找出文件,可以使用参数-mmin -mtime。下面是man手册中有关mmin和mtime的定义。 ?-mmin n文件最后一次修改是在n分钟之内 ?-mtime n文件最后一次修改是在n*24小时之内(译者注:也就是n天了呗)执行下面例子中的命令,将会找到当前目录以及其子目录下,最近一次修改时间在1个小时(60分钟)之内的文件或目录 1 # find . -mmin -60

同样的方式,执行下面例子中的命令,将会找到24小时(1天)内修改了的文件(文件系统根目录/ 下) 1 # find / -mtime -1 例2:找到1个小时内被访问过的文件 想要通过文件访问时间找出文件,可以使用参数-amin -atime。下面是man手册中有关amin和atime的定义。 ?-amin n文件最后一次访问是在n分钟之内 ?-atime n文件最后一次访问是在n*24小时之内 执行下面例子中的命令,将会找到当前目录以及其子目录下,最近一次访问时间在1个小时(60分钟)之内的文件或目录 1 # find . -amin -60 同样的方式,执行下面例子中的命令,将会找到24小时(1天)内被访问了的文件(文件系统根目录/ 下) 1 # find / -atime -1 例3:查找一个小时内状态被改变的文件 (译者注:这里的改变更第1个例子的更改文件内容时间是不同概念,这里是更改的是文件inode的数据,比如文件的权限,所属人等等信息) 要查找文件的inode的更改时间,使用-cmin和-ctime选项 ?-cmin n文件的状态在n分钟内被改变 ?-ctime n文件状态在n*24小时内(也就是n天内)被改变 (译者注:如果上面的n为-n形式,则表示n分钟/天之内,n为+n则表示n分钟/天之前) 下面的例子在当前目录和其子目录下面查找一个小时内文件状态改变的文件(也就是60分钟内): 1 # find . -cmin -60 同样的道理,下面的例子在根目录/及其子目录下一天内(24小时内)文件状态被改变的文件列表: 1 # find / -ctime -1 例4:搜索仅仅限定于文件,不显示文件夹

excel中的vlookup函数的使用方法及注意事项

excel博大精深,其使用中有许多细节的地方需要注意。 vlookup函数的使用,其语法我就不解释了,百度很多,其实我自己也没看懂语法的解释,下面就按照我自己的理解来说说怎么用的。首先,这个函数是将一个表中的数据导入另一个表中,其中这两个表有一列数据是相同项,但是排列顺序不同。举例说明; 表1 表2 将表1中的face量一列导入表2中,但两表中的名称一列的排列顺序是不同的。此时需要使用vlookup函数。 下面介绍vlookup的使用方法。

将鼠标放到表2中的D2单元格上,点击fx,会出现一个对话框,里面有vlookup函数。若在常用函数里面没有,下拉找“查找与引用”,里面有此函数。点确定。表示此函数是在表2中的D2单元格中应用。 此时出现对话框: 在第个格里输入B2,直接用鼠标在表2中点击B2单元格即可。表示需要在查找的对象是表2中的B2单元格中的内容。

然后是第二个格,点表1,用鼠标选择整个表的所有数据。表示要在表1中的B1—C14区域查找表2中的B2单元格中的内容。

第三个格里输入在表2中要导入的列数在表1中的列数的数字。在此例中为C列,其列数数字为2.表示将表1中(B1—C14)区域中查找到的单元格里的内容相对应的列(第2列)中的单元格中的内容(face量列中的数据)导入表2中相应的单元格(D2)。 最后一个格中输入“0”。表示查找不到就出现#N/A。点确定,即出现相应数据,然后下拉复制格式。

当下拉出现这种情况的时候: 其实是其查找区域在下拉过程中随着行的改变而改变了。需要对查找区域做一下固定。其方法为,在选择区域后,在区域前面加“$”号($B$1:$C$14)。

FIND命令大全

Linux Find命令精通指南 作者:Sheryl Calish 简单介绍这一无处不在的命令的强大的方面以及混乱的方面。 2008年7月发布 Linux find命令是所有Linux命令中最有用的一个,同时也是最混乱的一个。它很难,因为它的语法与其他Linux命令的标准语法不同。但是,它很强大,因为它允许您按文件名、文件类型、用户甚至是时间戳查找文件。使用find命令,您不但可以找到具这些属性任意组合的文件,还可以对它找到的文件执行操作。 本文的目的是,通过概述find命令的用途和潜能,简化该命令的学习和使用。同时,它将针对find命令的某些最强大但最混乱的方面提供一个基本的指南和参考。 [注意:本文使用的find版本是GNU版本,因此,某些细节可能与其他版本的find有所不同。] 基本格式 开始之前,我们先来看一下find命令的基本结构: find start_directory test options criteria_to_match action_to_perform_on_results 在以下命令中,find将开始在当前目录(用“.”表示)中查找任何扩展名为“java”的文件:find.-name"*.java" 下面是该命令所找到的命令的缩略清单: find.-name"*.java" ./REGEXPvalidate/src/oracle/otnsamples/plsql/ConnectionManager.java ./REGEXPvalidate/src/oracle/otnsamples/plsql/DBManager.java .. [注意:如果您从本文剪切并粘贴来运行该find命令,您可能需要使用自己的键盘替换双引号(“”)才能得出正确的结果。] 以下命令将执行相同的操作。在这两种情况下,您都需要对通配符进行转义以确保它传递到find命令并且不由shell解释。因此,请将您的搜索字符串放到引号里,或者在它前面加上反斜线:

个人总结的VLOOKUP使用方法

VLOOKUP函数是Excel中几个最重函数之一,为了方便大家学习,兰色幻想特针对VLOOKUP 函数的使用和扩展应用,进行一次全面综合的说明。本文为入门部分 一、入门级 VLOOKUP是一个查找函数,给定一个查找的目标,它就能从指定的查找区域中查找返回想要查找到的值。它的基本语法为: VLOOKUP(查找目标,查找范围,返回值的列数,精确OR模糊查找) 下面以一个实例来介绍一下这四个参数的使用 例1:如下图所示,要求根据表二中的姓名,查找姓名所对应的年龄。 公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0) 参数说明: 1 查找目标:就是你指定的查找的内容或单元格引用。本例中表二A列的姓名就是查找目标。我们要根据表二的“姓名”在表一中A列进行查找。 公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0)

2 查找范围(VLOOKUP(A13,$B$2:$D$8,3,0) ):指定了查找目标,如果没有说从哪里查找,EXCEL肯定会很为难。所以下一步我们就要指定从哪个范围中进行查找。VLOOKUP的这第二个参数可以从一个单元格区域中查找,也可以从一个常量数组或内存数组中查找。本例中要从表一中进行查找,那么范围我们要怎么指定呢?这里也是极易出错的地方。大家一定要注意,给定的第二个参数查找范围要符合以下条件才不会出错: A 查找目标一定要在该区域的第一列。本例中查找表二的姓名,那么姓名所对应的表一的姓名列,那么表一的姓名列(列)一定要是查找区域的第一列。象本例中,给定的区域要从第二列开始,即$B$2:$D$8,而不能是$A$2:$D$8。因为查找的“姓名”不在$A$2:$D$8区域的第一列。 B 该区域中一定要包含要返回值所在的列,本例中要返回的值是年龄。年龄列(表一的D列)一定要包括在这个范围内,即:$B$2:$D$8,如果写成$B$2:$C$8就是错的。 3 返回值的列数(B13 =VLOOKUP(A13,$B$2:$D$8,3,0))。这是VLOOKUP第3个参数。它是一个整数值。它怎么得来的呢。它是“返回值”在第二个参数给定的区域中的列数。 本例中我们要返回的是“年龄”,它是第二个参数查找范围$B$2:$D$8的第3列。这里一定要注意,列数不是在工作表中的列数(不是第4列),而是在查找范围区域的第几列。如果本例中要是查找姓名所对应的性别,第3个参数的值应该设置为多少呢。答案是2。因为性别在$B$2:$D$8的第2列中。 4 精确OR模糊查找(VLOOKUP(A13,$B$2:$D$8,3,0) ),最后一个参数是决定函数精确和模糊查找的关键。精确即完全一样,模糊即包含的意思。第4个参数如果指定值是0或FALSE就表示精确查找,而值为1 或TRUE时则表示模糊。这里兰色提醒大家切记切记,在使用VLOOKUP时千万不要把这个参数给漏掉了,如果缺少这个参数默为值为模糊查找,我们就无法精确查找到结果了。 好了,关于VLOOKUP函数的入门级应用就说到这里,VLOOKUP函数可不只是这么简单的查找,我们讲的还只是1/10的用法。其他的没法在一篇文章中说明。敬请期待“VLOOKUP 的使用方法-进阶篇”吧。

linux查找文件命令find

linux查找文件命令find 每一种操作系统都是由成千上万个不同种类的文件所组成的。其中有系统本身自带的文件,用户自己的文件,还有共享文件等等。我们有时候经常忘记某份文件放在硬盘中的哪个地方。在微软的WINDOWS操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击“开始”-“搜索”中就能按照各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档。 可是使用Linux的用户就没有那么幸运了,在Linux上查找某个文件确实是一件比较麻烦的事情。毕竟在Linux中需要我们使用专用的“查找”命令来寻找在硬盘上的文件。Linux下的文件表达格式非常复杂,不象WINDOWS,DOS下都是统一的AAAAAAA.BBB 格式那么方便查找,在WINDOWS中,只要知道要查找的文件的文件名或者后缀就非常容易查找到。Linux中查找文件的命令通常为“find”命令,“find”命令能帮助我们在使用,管理Linux的日常事务中方便的查找出我们需要的文件。对于Linux新手来说,“find”命令也是了解和学习Linux文件特点的方法。因为Linux发行版本繁多,版本升级很快,在Linux 书籍上往往写明某个配置文件的所在位置,往往Linux新手按图索骥还是不能找到。比如说REDHAT Linux 7.O和REDHAT Linux 7.1中有些重要的配置文件所在的硬盘位置和文件目录就有了很大的改变,如果不学会使用“find”命令,那么在成千上万的Linux文件中要找到其中的一个配置文件是相当困难的,笔者在没有精通“find”命令之前就吃过这样的苦头。好,下面就详细为大家介绍强大的“find”命令的全部使用方法和用途。 通过文件名查找法: 这个方法说起来就和在WINDOWS下查找文件一样容易理解了。如果你把这个文件放在单个的文件夹里面,只要使用常见的“ls"命令就能方便的查找出来,那么使用“find”命令来查找它就不能给你留下深刻的印象,毕竟“find”命令的强大功能不止这个。如果知道了某个文件的文件名,而不知道这个文件放到哪个文件夹,甚至是层层套嵌的文件夹里。举例说明,假设你忘记了httpd.conf这个文件在系统的哪个目录下,甚至在系统的某个地方也不知道,则这是可以使用如下命令: find / -name httpd.conf 这个命令语法看起来很容易就明白了,就是直接在find后面写上-name,表明要求系统按照文件名查找,最后写上httpd.conf这个目标文件名即可。稍等一会系统会在计算机

AIX命令介绍篇find命令实例讲解

A I X命令介绍篇f i n d 命令实例讲解 SANY标准化小组 #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

AIX命令介绍篇-find 命令实例讲解 我们经常需要根据文件特征查找一些文件,find命令就是实现这些功能的命令,下来我们就AIX操作系统上的常见操作进行介绍。 1、按文件名特征查找 a)在/ 目录下查找以.txt结尾的文件 find / -name ".txt" b)在当前用户主目录下查找以数字开头的文件 find ~ -name "[0-9]*" 或者 find $HOME -name "[0-9]*" c)查找当前目录下所有文件(相当于ls) find ./ 或 find . d)查找用户主目录下所有不以字母开头的文件 find ~ ! -name "[a-z,A-Z]*" e)查找根目录下以a或b或c开头的文件 find ~ -name "[abc]*" 2、按文件类型特征查找 注:如下各种类型都是文件,只是有不同的含义而已,这一点要明确 d 目录 l 符号链接(指向另一个文件)

s 套接字文件 b 块设备文件 c 字符设备文件 p 命名管道文件 f 普通文件,或者更准确地说,不属于以上几种类型的文件 因为各种类型文件的查找方法类似,如下以目录为例进行说明a)查找当前目录下的所有的目录(递归子目录) find ./ -type d b)查找当前目录下的所有的非目录文件(递归子目录) find ./ ! -type d 3、按权限特征查找 在/ 目录下查找755权限的各类文件 find / -perm 755 4、按文件属主特征查找 a)在/ 目录下查找用户mbfe的各类文件 find / -user mbfe b)在 / 目录下查找属主帐户已经被删除(不存在的属主)的文件find / -nouser 5、按文件属组(用户组)特征查找 a)在/ 目录下查找属于用户组mqm的各类文件 find / -group mqm b)在 / 目录下查找已经被删除用户组的文件

VLOOKUP函数的使用方法(从入门到精通)

VLOOKUP函数的使用方法(入门级) VLOOKUP函数是Excel中几个最重函数之一,为了方便大家学习,兰色幻想特针对VLOOKUP 函数的使用和扩展应用,进行一次全面综合的说明。本文为入门部分 一、入门级 VLOOKUP是一个查找函数,给定一个查找的目标,它就能从指定的查找区域中查找返回想要查找到的值。它的基本语法为: VLOOKUP(查找目标,查找范围,返回值的列数,精确OR模糊查找) 下面以一个实例来介绍一下这四个参数的使用 例1:如下图所示,要求根据表二中的姓名,查找姓名所对应的年龄。 公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0) 参数说明: 1 查找目标:就是你指定的查找的内容或单元格引用。本例中表二A列的姓名就是查找目标。我们要根据表二的“姓名”在表一中A列进行查找。 公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0) 2 查找范围(VLOOKUP(A13,$B$2:$D$8,3,0) ):指定了查找目标,如果没有说从哪里查找,EXCEL肯定会很为难。所以下一步我们就要指定从哪个范围中进行查找。VLOOKUP的这第二个参数可以从一个单元格区域中查找,也可以从一个常量数组或内存数组中查找。本例中要从表一中进行查找,那么范围我们要怎么指定呢?这里也是极易出错的地方。大家一定要注意,给定的第二个参数查找范围要符合以下条件才不会出错: A 查找目标一定要在该区域的第一列。本例中查找表二的姓名,那么姓名所对应的表一的姓名列,那么表一的姓名列(列)一定要是查找区域的第一列。象本例中,给定的区域要从第二列开始,即$B$2:$D$8,而不能是$A$2:$D$8。因为查找的“姓名”不在$A$2:$D$8区域的第一列。 B 该区域中一定要包含要返回值所在的列,本例中要返回的值是年龄。年龄列(表一的D列)一定要包括在这个范围内,即:$B$2:$D$8,如果写成$B$2:$C$8就是错的。 3 返回值的列数(B13 =VLOOKUP(A13,$B$2:$D$8,3,0))。这是VLOOKUP第3个参数。它是一个整数值。它怎么得来的呢。它是“返回值”在第二个参数给定的区域中的列数。本例中我们

vlookup函数的使用方法实例

VLOOKUP函数是Excel中的一个纵向查找函数,它与LOOKUP函数和HLOOKUP函数属于一类函数,在工作中都有广泛应用。VLOOKUP是按列查找,最终返回该列所需查询列序所对应的值;与之对应的HLOOKUP是按行查找的。 VLOOKUP函数的语法结构 整个计算机就相当于一门语言,首先我们就是要获取该函数的语法结构。以下是官网的语法结构 VLOOKUP(lookup_value, table_array, col_index_num, [range_looku p])。 书上表述就是VLOOKUP(查找值,查找范围,查找列数,精确匹配或者近似匹配) 在我们的工作中,几乎都使用精确匹配,该项的参数一定要选择为false。否则返回值会出乎你的意料。 VLOOKUP函数使用示范 vlookup就是竖直查找,即列查找。通俗的讲,根据查找值参数,在查找范围的第一列搜索查找值,找到该值后,则返回值为:以第一列为准,往后推数查找列数值的这一列所对应的值。这也是为什么该函数叫做vlookup(v为vertic al-竖直之意,lookup即时英文的查找之意)。 现有如下手机的每日销售毛数据(图左),A分销商需要提供四个型号的销售数据(图右)

这个时候,你大概可能回去一个一个人工查找,因为我所提供的数据数量很少,但是其实工作中这种数据很庞大的,人工查找无疑即浪费时间,而且不能让A分销商相信你所提供数据的准确性。接下来,我们就需要本次的主角登场了。使用vlookup函数。 第一步:选中要输入数据的单元格,=VLOOKUP(H3,$A$3:$F$19,5,FALSE)如图

linux下find命令详解

linux下find命令详解 find命令是一个无处不在命令,是linux中最有用的命令之一。find命令用于:在一个目录(及子目录)中搜索文件,你可以指定一些匹配条件,如按文件名、文件类型、用户甚至是时间戳查找文件。 一、find命令的一般形式 find [options] [查找路径] [查找条件] [处理动作] 查找路径:默认为当前目录 查找条件:默认为查找指定路径下的所有文件 处理动作:默认为显示 path:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录 expression:expression可以分为——“-options [-print -exec -ok ...]” -options:指定find命令的常用选项 -print:find命令将匹配的文件输出到标准输出,默认,可省略 -exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格 1、find ./ -size 0 -exec rm {} \;

删除文件大小为零的文件 rm -i `find ./ -size 0` 或 find ./ -size 0 | xargs rm -f & 为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项中: 2、find . -type f -exec ls -l { } \; 在/logs目录中查找更改时间在5日以前的文件并删除它 们: find /logs -type f -mtime +5 -exec rm { } \; -ok:和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。 find . -name "*.conf" -mtime +5 -ok rm { } \; 在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示 二、find命令的常用选项及实例 -a :组合条件“和” -not:组合条件“非” 非A并且非B:非(A或B) 非A或非B:非(A并B)

find用法小结

=============================== 1. 通过文件的特征查找: =============================== 1) 按文件名 find / -name httpd.conf find /usr -name httpd.conf find /etc -name '*srm*' 2) 按大小 find / -size 1500c # 查找文件大小为1,500 bytes的文件,字符c 表明这个要查找的文件的大小是以bytes为单位。 find/ -size +10000000c # "+”是表示要求系统只列出大于指定大小的文件, "-”表示小于 find / -empty # 查找在系统中为空的文件或者文件夹 -size:表示文件大小,+表示大于某个数,-表示小于某个数。c表示单位是字节,你可以将c换成k,M,G。 3) 按时间 find / -amin -10 # 查找在系统中最后10分钟访问的文件 find / -atime -2 # 查找在系统中最后48小时访问的文件

find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件 find / -mtime -1 # 查找在系统中最后24小时里修改过的文件 find / -cmin -5 # 查找在系统中最后5分钟里被改变状态的文件 find / -ctime -1 # 查找在系统中最后24小时里被改变状态的文件 访问过用amin,修改过用mmin,文件状态改变过用cmin 精确到分钟的用amin,mmin,cmin,精确到天的用atime,mtime,ctime 在5分钟之内的用-5,在5分钟以上的用+5 4) 按用户 find / -user fred # 查找在系统中属于FRED这个用户的文件 find / -group cat # 查找在系统中属于groupcat的文件 find / -nouser # 查找在系统中属于作废用户的文件 5) 其他 -false 查找系统中总是错误的文件 -fstype type 查找系统中存在于指定文件系统的文件,例如:ext2 . -gid n 查找系统中文件数字组ID 为n的文件 -group gname 查找系统中文件属于gnam文件组,并且指定组和ID的文件

VLOOKUP函数地使用方法

VLOOKUP函数的使用方法(入门级)一、入门级 VLOOKUP是一个查找函数,给定一个查找的目标,它就能从指定的查找区域中查找返回想要查找到的值。它的基本语法为: VLOOKUP(查找目标,查找范围,返回值的列数,精确OR模糊查找) 下面以一个实例来介绍一下这四个参数的使用 例1:如下图所示,要求根据表二中的姓名,查找姓名所对应的年龄。 公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0) 参数说明: 1 查找目标:就是你指定的查找的内容或单元格引用。本例中表二A列的姓名就是查找目标。我们要根据表二的“姓名”在表一中A列进行查找。

公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0) 2 查找范围(VLOOKUP(A13,$B$2:$D$8,3,0) ):指定了查找目标,如果没有说从哪里查找,EXCEL肯定会很为难。所以下一步我们就要指定从哪 个范围中进行查找。VLOOKUP的这第二个参数可以从一个单元格区域中查找, 也可以从一个常量数组或内存数组中查找。本例中要从表一中进行查找,那么范 围我们要怎么指定呢?这里也是极易出错的地方。大家一定要注意,给定的第二 个参数查找范围要符合以下条件才不会出错: A 查找目标一定要在该区域的第一列。本例中查找表二的姓名,那么姓名 所对应的表一的姓名列,那么表一的姓名列(列)一定要是查找区域的第一列。 象本例中,给定的区域要从第二列开始,即$B$2:$D$8,而不能是$A$2:$D$8。 因为查找的“姓名”不在$A$2:$D$8区域的第一列。 B 该区域中一定要包含要返回值所在的列,本例中要返回的值是年龄。年 龄列(表一的D列)一定要包括在这个范围内,即:$B$2:$D$8,如果写成$B $2:$C$8就是错的。 3 返回值的列数(B13 =VLOOKUP(A13,$B$2:$D$8,3,0))。这是VLO OKUP第3个参数。它是一个整数值。它怎么得来的呢。它是“返回值”在第 二个参数给定的区域中的列数。本例中我们要返回的是“年龄”,它是第二个参 数查找范围$B$2:$D$8的第3列。这里一定要注意,列数不是在工作表中的列 数(不是第4列),而是在查找范围区域的第几列。如果本例中要是查找姓名所

Linux中find常见用法

Linux中find常见用法 ·find path -option [ -print ] [ -e xec -ok command ] {} \; #-print 将查找到的文件输出到标准输出 #-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格 #-ok 和-exec相同,只不过在操作前要询用户 ==================================================== -name filename #查找名为filename的文件 -perm #按执行权限来查找 -user username #按文件属主来查找 -group groupname #按组来查找 -mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前 -atime -n +n #按文件访问时间来查GIN: 0px"> -ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前 -nogroup #查无有效属组的文件,即文件的属组在 /etc/groups中不存在 -nouser #查无有效属主的文件,即文件的属主在 /etc/passwd中不存 -newer f1 !f2 找文件,-n指n天以内,+n指n天以前 -ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前 -nogroup #查无有效属组的文件,即文件的属组在 /etc/groups中不存在 -nouser #查无有效属主的文件,即文件的属主在 /etc/passwd中不存 -newer f1 !f2 #查更改时间比f1新但比f2旧的文件 -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件 -size n[c] #查长度为n块[或n字节]的文件 -depth #使查找在进入子目录前先行查找完本目录 -fstype #查更改时间比f1新但比f2旧的文件 -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件

相关文档
最新文档