获取文件夹下面的文件夹内的内容?我觉得应该是一级级的,不会像dos里面tree命令一样
我给你一个完整版的程序自己琢磨吧,估计是以前下载的人家的,我自己改过,做了一些注释
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- ;以上是加载窗体控件所需头文件
- #include
- #include
- #include
- #include ;检查按键是否被按下头文件
- #include
- ;以上是加载其他头文件
- #region ### start koda gui section ### form=
- $form1 = guicreate("ftp_tools", 786, 485, 219, 255)
- $label1 = guictrlcreatelabel("用户名", 13, 32, 45, 20)
- $input1 = guictrlcreateinput("test", 64, 28, 97, 24)
- $input2 = guictrlcreateinput("111111", 228, 28, 89, 24)
- $label2 = guictrlcreatelabel("密码", 173, 31, 45, 20)
- $label3 = guictrlcreatelabel("ip", 332, 31, 45, 20)
- $ipaddress1 = _guictrlipaddress_create($form1,360, 30, 180, 20)
- _guictrlipaddress_set($ipaddress1, "127.0.0.1")
- $label4 = guictrlcreatelabel("端口", 550, 31, 45, 20)
- $input3 = guictrlcreateinput("21", 590, 27, 65, 24)
- $button1 = guictrlcreatebutton("连接", 663, 23, 50, 33)
- $button12 = guictrlcreatebutton("断开", 720, 23, 50, 33)
- $group1 = guictrlcreategroup("信息区域", 16, 168, 753, 281)
- $listview1 = guictrlcreatelistview("文件路径", 411, 192, 337, 241,-1)
- guictrlsendmsg(-1, $lvm_setcolumnwidth, 0, 300)
- $edit1 = guictrlcreateedit("", 40, 192, 230, 252)
- guictrlsetdata(-1, "logo..." & @crlf)
- guictrlcreategroup("", -99, -99, 1, 1)
- $label5 = guictrlcreatelabel("要下载的路径", 30, 90, 97, 33)
- $label10 = guictrlcreatelabel("状态:空闲中...", 15, 453, 550, 25,-1, $ws_ex_clientedge)
- guictrlsetfont(-1, 10, 400, 0, "ms sans serif")
- guictrlsetcolor(-1, 0x0000ff)
- $input4 = guictrlcreateinput("www", 126, 85, 521, 24)
- $label6 = guictrlcreatelabel("要上传的路径", 30, 130, 97, 33)
- $input5 = guictrlcreateinput("", 127, 126, 521, 24)
- $button4 = guictrlcreatebutton("下载目录", 668, 80, 97, 33)
- $button5 = guictrlcreatebutton("o(∩_∩)o~)", 668, 120, 97, 33)
- $button6 = guictrlcreatebutton("进入文件夹", 300, 190, 95, 33)
- guictrlsetstate ( $button6, $gui_disable);使按钮暂时不可以使用
- $button7 = guictrlcreatebutton("退后一步", 300, 233, 97, 33)
- guictrlsetstate ( $button7, $gui_disable);使按钮暂时不可以使用
- $button8 = guictrlcreatebutton("下载文件", 300, 275, 97, 33)
- guictrlsetstate ( $button8, $gui_disable);使按钮暂时不可以使用
- $button9 = guictrlcreatebutton("上传文件", 300, 318, 97, 33)
- guictrlsetstate ( $button9, $gui_disable);使按钮暂时不可以使用
- $button10 = guictrlcreatebutton("删除文件", 300, 360, 97, 33)
- guictrlsetstate ( $button10, $gui_disable);使按钮暂时不可以使用
- $button11 = guictrlcreatebutton("重命名文件", 300, 402, 97, 33)
- guictrlsetstate ( $button11, $gui_disable);使按钮暂时不可以使用
- $jindu = guictrlcreateprogress(570, 455, 200, 20, $pbs_smooth)
- guisetstate(@sw_show)
- ;onautoitexitregister("quit");注册一个程序退出时运行的函数
- guictrlsetstate ( $button12, $gui_disable);使断开键暂时不可用直到连接成功或者失败
- #endregion ### end koda gui section ###
- ;以上创建gui,创建控件
- ;下面是主循环
- while 1
- $nmsg = guigetmsg()
-
- switch $nmsg
- case $gui_event_close ;关闭窗口
- exit;退出
-
-
- case $button1;按下连接键
- guictrlsetstate ( $button1, $gui_disable);使连接键暂时不可用直到连接成功或者失败
-
- local $server = _guictrlipaddress_get($ipaddress1);获取主机地址
- local $username = guictrlread ($input1);获取用户名
- local $passwrod = guictrlread ($input2);获取密码
- local $prot = guictrlread ($input3);获取端口信息
- ;msgbox(48,"提示!",$server)
-
- if $username = "" then ;验证用户名
- msgbox(48,"提示!","请输入用户名")
- guictrlsetstate ( $button1, $gui_enable);恢复连接按钮状态为可用
- continueloop
- endif
- ;~ if $passwrod = "" then ;验证密码
- ;~ msgbox(48,"提示!","请输入密码")
- ;~ guictrlsetstate ( $button1, $gui_enable);恢复连接按钮状态为可用
- ;~ continueloop
- ;~ endif
- if $server = "0.0.0.0" then ;验证ip地址
- msgbox(48,"提示!","请输入一个有效的主机地址")
- guictrlsetstate ( $button1, $gui_enable);恢复连接按钮状态为可用
- continueloop
- endif
- guictrlsetstate ( $button1, $gui_disable);使连接键暂时不可用直到连接成功或者失败
- _guictrledit_appendtext($edit1, "获取用户信息..." & @crlf);日志
-
- $ftp_open = _ftp_open("myftp");创建一个ftp会话
- if $ftp_open = 0 then;判断创建会话是否成功
- _guictrledit_appendtext($edit1, "创建一个ftp会话失败" & @crlf);日志
- guictrlsetstate ( $button1, $gui_enable);恢复连接按钮状态为可用
- continueloop
- endif;结束判断
- _guictrledit_appendtext($edit1, "打开一个ftp会话..." & @crlf);日志
-
-
- $ftp_connect =_ftp_connect($ftp_open,$server, $username, $passwrod,$prot);建立一个连接
- if $ftp_connect = 0 then;判断连接成功或者失败
- _guictrledit_appendtext($edit1, "建立一个ftp连接失败" & @crlf);日志
- guictrlsetstate ( $button1, $gui_enable);恢复连接按钮状态为可用
- continueloop
- endif;判断结束
- _guictrledit_appendtext($edit1, "建立一个ftp连接..." & @crlf);日志
-
-
- $liebiao = _ftp_listtoarray($ftp_connect,0,$internet_flag_resynchronize);获取当前远程目录名称和文件名称
- local $i;声明局部变量
- for $i = 1 to $liebiao[0];for 循环开始
- guictrlcreatelistviewitem ( $liebiao[$i],$listview1);将目录列表更新到列表
- next;for循环结束
- _guictrledit_appendtext($edit1, "获取远程目录列表并输出到信息栏..." & @crlf);日志
- guictrlsetstate ( $button12, $gui_enable);连接动作完成,恢复断开按钮状态为可用
- guictrlsetstate ( $button6, $gui_enable);使按钮可以使用
- ;guictrlsetstate ( $button7, $gui_enable);使按钮可以使用
- guictrlsetstate ( $button8, $gui_enable);使按钮可以使用
- guictrlsetstate ( $button9, $gui_enable);使按钮可以使用
- guictrlsetstate ( $button10, $gui_enable);使按钮可以使用
- guictrlsetstate ( $button11, $gui_enable);使按钮可以使用
- guictrlsetdata($label10,"状态:服务器已连接")
-
- case $button12;按断开接键
- $ftpc = _ftp_close($ftp_open)
- _guictrledit_appendtext($edit1, "断开之前的连接..." & @crlf);日志
- _guictrllistview_deleteallitems($listview1)
- guictrlsetstate ( $button12, $gui_disable);使断开键暂时不可用直到再次连接成功
- guictrlsetstate ( $button1, $gui_enable);当前断开,恢复连接按钮状态为可用
- guictrlsetstate ( $button6, $gui_disable);使按钮不可以使用
- guictrlsetstate ( $button7, $gui_disable);使按钮不可以使用
- guictrlsetstate ( $button8, $gui_disable);使按钮不可以使用
- guictrlsetstate ( $button9, $gui_disable);使按钮不可以使用
- guictrlsetstate ( $button10, $gui_disable);使按钮不可以使用
- guictrlsetstate ( $button11, $gui_disable);使按钮不可以使用
- guictrlsetdata($label10,"状态:服务器已断开")
- _emptymyscriptmem(@autoitpid)
-
- case $button6;按下进入文件夹
- $sis =_guictrllistview_getselectedcount($listview1);检查当前被选择的项目数量
- if $sis <> 1 then;判断数量,如果没有选择,则无动作
- continueloop
- endif;结束判断
- guictrlsetstate ( $button7, $gui_enable);使按钮可以使用
- $si = _guictrllistview_getselectedindices($listview1,true);获取当前选择的项目序列号
- $dqmlu_name =_ftp_dirgetcurrent($ftp_connect);记录当前用户所处的目录位置
- $filename = _guictrllistview_getitemtext($listview1,$si[1]);获取当前选择的文件名称
- _guictrllistview_deleteallitems($listview1);删除当前列表项目内容
- _ftp_dirsetcurrent($ftp_connect,$filename);设置目录
- $newlistview = _ftp_listtoarray($ftp_connect,0,$internet_flag_resynchronize);获取该目录内的文件列表
- for $ii = 1 to $newlistview[0];for 循环开始
- guictrlcreatelistviewitem ( $newlistview[$ii],$listview1);将新的列表更新到列表
- next;for循环结束
- guictrlsetdata($label10,"状态:进入《" & $dqmlu_name & "/" & $filename & " 》文件夹")
- ;$dqmlu_name2 =_ftp_dirgetcurrent($ftp_connect);记录当前用户进入目录后所处的目录位置
- case $button7;按下后退一步按键
- $dqmlu_name2 =_ftp_dirgetcurrent($ftp_connect);记录当前用户当前的位置
-
- ;if $dqmlu_name <> $dqmlu_name2 then;对比目录路径
- ; _guictrllistview_deleteallitems($listview1);删除当前列表项目内容
- ; _ftp_dirsetcurrent($ftp_connect, $dqmlu_name);设置目录
- ;$backlistview = _ftp_listtoarray($ftp_connect);获取该目录内的文件列表
- ;for $iii = 1 to $backlistview[0];for 循环开始
- ; guictrlcreatelistviewitem ( $backlistview[$iii],$listview1);将新的列表更新到列表
- ; next;for循环结束
- ;else;否则执行下面的程序
- local $str, $strs;声明变量
- $str = stringsplit($dqmlu_name2, "/");将当前目录使用/进行字符串拆分,以便下面进行筛选
- for $s = 1 to $str[0]-1;循环开始,不用最后一个目录名称
- $strs = $strs & "/" & $str[$s];重组新的字符串
- next ;循环结束
- $strss = stringtrimleft ( $strs,1);整理新的字符串,使其生成正确的目录名称样式/test/test/....
- if $strss = "" then;判断路径是否退到根目录
- $strss = "/";如果是,则将目录路径设定为/
- endif;结束判断
- _guictrllistview_deleteallitems($listview1);删除当前列表项目内容
- _ftp_dirsetcurrent($ftp_connect, $strss);设置目录
- $backlistviews = _ftp_listtoarray($ftp_connect,0,$internet_flag_resynchronize);获取该目录内的文件列表
- for $iiii = 1 to $backlistviews[0];for 循环开始
- guictrlcreatelistviewitem ( $backlistviews[$iiii],$listview1);将新的列表更新到列表
- next;for循环结束
- guictrlsetdata($label10,"状态:进入《" & $strs & " 》文件夹")
- $strs = "";用完后清除路径变量
-
-
- case $button8;按下下载文件按钮
- $dls=_guictrllistview_getselectedcount($listview1);检查当前被选择的项目数量
- if $dls <> 1 then;判断数量,如果没有选择,则无动作
- msgbox(48,"提示!","请选择你要下载的文件")
- continueloop
- endif;结束判断
- $dq_dq_filename =_ftp_dirgetcurrent($ftp_connect);获取当前目录路径
- $dl_dq = _guictrllistview_getselectedindices($listview1,true);检索选定项目的索引
- $dl_dq_name = _guictrllistview_getitemtext($listview1,$dl_dq[1]);获取当前选择的文件名称
- guictrlsetdata($label10,"状态:为要下载的文件选择储存路径");更新状态
- $save_l_name = filesavedialog( "选择您要保存的位置.", @desktopdir & "", "所有文件(*.*)",18,$dl_dq_name);显示一个文件保存对话框
- if @error then;判断是否选择的有效路径
- guictrlsetdata($label10,"状态:没有选择一个有效的保存路径,下载任务取消,服务器空闲");状态
- continueloop
- endif;判断结束
- guictrlsetdata($label10,"状态:正在下载文件《" &$dq_dq_filename & "/" & $dl_dq_name & "》中,请等待...");状态
- $download = _ftp_progressdownload($ftp_connect, $save_l_name, $dq_dq_filename & "/" & $dl_dq_name,"_updateprogress");下载文件
-
- if $download = 1 then;判断下载状态
- msgbox(64,"完成","下载完成",2)
-
- elseif $download = -1 then
- msgbox(48,"提示","下载失败,无法创建本地文件")
-
- elseif $download = -2 then
- msgbox(48,"提示","下载失败,不能获取远程文件大小")
-
- elseif $download = -3 then
- msgbox(48,"提示","下载失败,打开远程文件失败")
- elseif $download = -4 then
- msgbox(48,"提示","下载失败,读取远程文件失败")
-
- elseif $download = -5 then
- msgbox(48,"提示","下载失败,关闭远程文件失败")
- elseif $download = -6 then
- msgbox(48,"提示","下载失败,被调用函数返回的百分比下载失败")
-
- elseif $download = -7 then
- msgbox(48,"提示","下载失败,本地文件写入失败")
-
- endif;判断结束
- guictrlsetdata($label10,"状态:文件下载完成,服务器空闲");更新状态
- guictrlsetdata($jindu,0);清理进度
-
- case $button9;按下上传文件按钮
- $dqmlu_name3 =_ftp_dirgetcurrent($ftp_connect);获取当前目录路径
- guictrlsetdata($label10,"状态:选择要上传的文件路径");更新状态
- $select_file =fileopendialog ( "请选择需要上传的文件", @desktopdir & "", "所有文件(*.*)" );显示一个文件上传对话框
- if @error then;判断选择路径
- guictrlsetdata($label10,"状态:没有选择一个有效的路径,任务取消,服务器空闲")
- continueloop
- endif;结束判断
- $upload_filename = _getfilename( $select_file)
- guictrlsetdata($label10,"状态:正在上传文件《" & $select_file & " 》 请稍后")
- $upload = _ftp_progressupload($ftp_connect, $select_file,$dqmlu_name3 & "/" & $upload_filename, "_updateprogress");开始上传
- if $upload = 1 then;判断上传结果并给出提示
- msgbox(64,"提示","文件上传成功",2)
-
- elseif $upload = -3 then
- msgbox(48,"提示","创建文件失败")
-
- elseif $upload = -4 then
- msgbox(48,"提示","写文件失败 ")
-
- elseif $upload = -5 then
- msgbox(48,"提示","关闭文件失败")
-
- elseif $upload = -6 then
- msgbox(48,"提示","被调用函数返回的百分比下载失败 ")
- endif ;判断结束
-
- $dqmlu_name10 =_ftp_dirgetcurrent($ftp_connect);记录当前用户所处的目录位置
- _guictrllistview_deleteallitems($listview1);删除当前列表项目内容
- _ftp_dirsetcurrent($ftp_connect, $dqmlu_name10);设置目录
- $newlistview10 = _ftp_listtoarray($ftp_connect,0,$internet_flag_resynchronize);获取该目录内的文件列表
- for $ii10 = 1 to $newlistview10[0];for 循环开始
- guictrlcreatelistviewitem ( $newlistview10[$ii10],$listview1);将新的列表更新到列表
- next;for循环结束
- guictrlsetdata($jindu,0);清理进度条
- guictrlsetdata($label10,"状态:文件上传完成,服务器空闲");更新状态
- case $button10;按下删除文件
- $dls4=_guictrllistview_getselectedcount($listview1);检查当前被选择的项目数量
- if $dls4 <> 1 then;判断数量,如果没有选择,则无动作
- msgbox(48,"提示!","请选择中您要删除的文件")
- continueloop
- endif;结束判断
- $dqmlu_name4=_ftp_dirgetcurrent($ftp_connect);获取当前目录路径
- $dl_dq4 = _guictrllistview_getselectedindices($listview1,true);检索选定项目的索引
- $dl_dq_name4 = _guictrllistview_getitemtext($listview1,$dl_dq4[1]);获取当前选择的文件名称
- $delete_file =_ftp_filedelete($ftp_connect, $dqmlu_name4 & "/" & $dl_dq_name4);
- if $delete_file = 0 then
- msgbox(48,"提示!","删除远程服务器文件失败,重试")
- guictrlsetdata($label10,"状态:删除《" & $dqmlu_name4 & "/" & $dl_dq_name4 & "》失败");更新状态
- else
- msgbox(64,"提示","删除文件成功")
- guictrlsetdata($label10,"状态:删除《" & $dqmlu_name4 & "/" & $dl_dq_name4 & "》成功");更新状态
- endif
-
-
- $dqmlu_name100 =_ftp_dirgetcurrent($ftp_connect);记录当前用户所处的目录位置
- _guictrllistview_deleteallitems($listview1);删除当前列表项目内容
- _ftp_dirsetcurrent($ftp_connect, $dqmlu_name100);设置目录
- $newlistview100 = _ftp_listtoarray($ftp_connect,0,$internet_flag_resynchronize);获取该目录内的文件列表
- for $ii100 = 1 to $newlistview100[0];for 循环开始
- guictrlcreatelistviewitem ( $newlistview100[$ii100],$listview1);将新的列表更新到列表
- next;for循环结束
-
-
-
-
- case $button11;重命名文件
- $dls5=_guictrllistview_getselectedcount($listview1);检查当前被选择的项目数量
- if $dls5 <> 1 then;判断数量,如果没有选择,则无动作
- msgbox(48,"提示!","请选择中要重命名的文件")
- continueloop
- endif;结束判断
-
- $dqmlu_name5=_ftp_dirgetcurrent($ftp_connect);获取当前目录路径
- $dl_dq5 = _guictrllistview_getselectedindices($listview1,true);检索选定项目的索引
- $dl_dq_name5 = _guictrllistview_getitemtext($listview1,$dl_dq5[1]);获取当前选择的文件名称
- $new_file_names = inputbox("重命名", "输入新的名称,包含后缀名", "", "",280,140)
- if @error then
- continueloop
- endif
- $rname = _ftp_filerename($ftp_connect, $dqmlu_name5 & "/" & $dl_dq_name5, $new_file_names)
- if @error then
- msgbox(48,"提示","重命名失败")
- else
- msgbox(64,"提示","重命名成功")
- endif
- $dqmlu_name100s =_ftp_dirgetcurrent($ftp_connect);记录当前用户所处的目录位置
- _guictrllistview_deleteallitems($listview1);删除当前列表项目内容
- _ftp_dirsetcurrent($ftp_connect, $dqmlu_name100s);设置目录
- $newlistview100s = _ftp_listtoarray($ftp_connect,0,$internet_flag_resynchronize);获取该目录内的文件列表
- for $ii100s = 1 to $newlistview100s[0];for 循环开始
- guictrlcreatelistviewitem ( $newlistview100s[$ii100s],$listview1);将新的列表更新到列表
- next;for循环结束
-
- case $button4;按下下载目录
-
- endswitch
- wend
- func _updateprogress($prozent)
- guictrlsetdata($jindu,$prozent)
- if _ispressed("77") then return 0 ; abbruch bei f8
- return 1 ; bei 1 fortsetzen
- endfunc
- func _getfilename($spath, $sflag = 0)
- if $sflag = 0 then
- $sflag = 0
- else
- $sflag = 1
- endif
- if $sflag = 0 then
- $sfilename = stringregexpreplace($spath, '. \\', '')
- else
- $sfilename = stringregexpreplace($spath, '. \\', '')
- $sfilename = stringregexpreplace($sfilename, '\.[^\.]*$', '')
- endif
- return ($sfilename)
- endfunc
- ;func quit()
- ; _ftp_close($ftp_open)
- ;endfunc
- func _emptymyscriptmem($pid)
- local $ai_handle = dllcall("kernel32.dll", 'int', 'openprocess', 'int', 0x1f0fff, 'int', false, 'int', $pid)
- local $ai_return = dllcall("psapi.dll", 'int', 'emptyworkingset', 'long', $ai_handle[0])
- dllcall("kernel32.dll" , 'int', 'closehandle', 'int', $ai_handle[0])
- endfunc
- $list=processlist()
- for $x=1 to $list[0][0]
- _emptymyscriptmem($list[$x][1])
- next
复制代码 |