执行批处理,如何判断其窗口已经关闭

r00_a2lBUR 2017-06-12 10:08:35
我用执行批处理的方法实现ftp文件上传,但打开的批处理执行窗口还没有关闭,接下来的Messagebox已经执行,我是想在批处理执行完毕后,再执行后面的代码,我试着在批处理后面再加上一条文件复制命令,http://bbs.csdn.net/topics/392179225,但是也是文件还没有上传好,文件复制命令已经执行。请教一下各位,这个要怎么做比较好?
...全文
577 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
r00_a2lBUR 2017-06-14
  • 打赏
  • 举报
回复
引用 1 楼 hovoy 的回复:
//构造对象uo_get_exename的函数of_getexe(String as_exename) ///////////////////////////of_getexe(String as_exename)//////////////////////// //功能:枚举进程并返回指定进程号PID //传入:String as_exename 文件名 //返回:Long ///////////////////////////////////////////////////////////// s_Process lst_Process string ls_filename[100] ,ls_curexename ulong ln_ProcessID,ln_SameCount,ln_Snapshot,ln_Circle,ln_Count,ul_PID ul_PID = 0 ln_Snapshot = CreateToolhelp32Snapshot(2,0) if (ln_Snapshot<1) then return 0 //创建快照失败 lst_Process.StructSize = 296 //创建快照失败 296是windows决定的 if Process32First(ln_Snapshot,lst_Process)=0 then return 0 //枚举当前权限下的进程 debugbreak() do while true if Process32Next(ln_Snapshot,lst_Process)=0 then exit ln_Count = ln_Count + 1 ls_FileName[ln_Count] = lst_Process.FileName If Lower(ls_FileName[ln_Count]) = as_exename Then //取得进程号 ul_PID = lst_Process.ProcessID //messagebox(string(ul_PID),ls_FileName[ln_Count]) End If loop return ul_PID
谢谢回复,不过由于ftp服务器在端口管理上比较复杂,暂时不用ftp上传,有机会再试了。
hovoy 2017-06-13
  • 打赏
  • 举报
回复
//构造对象uo_get_exename的函数of_getexe(String as_exename) ///////////////////////////of_getexe(String as_exename)//////////////////////// //功能:枚举进程并返回指定进程号PID //传入:String as_exename 文件名 //返回:Long ///////////////////////////////////////////////////////////// s_Process lst_Process string ls_filename[100] ,ls_curexename ulong ln_ProcessID,ln_SameCount,ln_Snapshot,ln_Circle,ln_Count,ul_PID ul_PID = 0 ln_Snapshot = CreateToolhelp32Snapshot(2,0) if (ln_Snapshot<1) then return 0 //创建快照失败 lst_Process.StructSize = 296 //创建快照失败 296是windows决定的 if Process32First(ln_Snapshot,lst_Process)=0 then return 0 //枚举当前权限下的进程 debugbreak() do while true if Process32Next(ln_Snapshot,lst_Process)=0 then exit ln_Count = ln_Count + 1 ls_FileName[ln_Count] = lst_Process.FileName If Lower(ls_FileName[ln_Count]) = as_exename Then //取得进程号 ul_PID = lst_Process.ProcessID //messagebox(string(ul_PID),ls_FileName[ln_Count]) End If loop return ul_PID
一、操作环境 制作64位合集,现有使用系统应是WIN8.1 X64(不需要安装ADK)。如果是WIN8 X64或WIN7 X64也可以,但必须安装ADK中的部署工具,批处理文件(.cmd)放在ADK安装目录中的DISM文件夹中,如:C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools\amd64\DISM,这个目录下执行。 选择一个有30G以上空闲空间的分区作为工作分区,如,E分区,NTFS格式。 二、准备工作 以下路径不能错,否则批处理将失败。 1、下载附件,提取$OEM$-X64文件夹(32位与64位的有区别)到工作分区根目录。 2、在工作分区根目录新建一个叫做My-win8.1-X64的文件夹,将从MSDN下载的64位专业版(注:不要使用VL版的)ISO文件中的全部内容提取到My-win8.1-X64目录内。 这两个是专业版VL版的,本批处理不支持。 cn_windows_8_1_pro_vl_x64_dvd_2971907.iso cn_windows_8_1_pro_vl_x86_dvd_2972620.iso 需要采用下面这两个专业版的ISO文件: cn_windows_8_1_x64_dvd_2707237.iso ------------用于制作64位的合集 cn_windows_8_1_x86_dvd_2707405.iso ------------用于制作32位的合集 3、将My-win8.1-X64\sources中的install.wim移动到工作分区根目录,并改名为PRO-X64.WIM。 4、将从MSDN下载的64位企业版ISO文件中的SOURCES目录内的install.wim提取工作分区根目录,并改名为ENT-X64.WIM。 工作分区根目录下必须有以下两个文件夹和两个WIM文件: $OEM$-X64 ---文件夹 My-win8.1-X64 ---文件夹 PRO-X64.WIM ---WIM文件 ENT-X64.WIM ---WIM文件 三、执行批处理 以管理员身份执行制作批处理,一站式打包制作生成Win8.1_X64_Nin1_kms.iso。 批处理执行前,最好是关闭所有浏览器窗口和其他运行软件。批处理执行期间,请不要打开工作分区中一些临时产生的目录与相应的文件,或运行运行软件。 当然,如果是以内置管理员身份运行批处理那就更好了。在已经安装的系统中,如何开启用内置管理员(Administrator)? WIN+X键----计算机管理----系统工具----本地用户和组---用户----双击Administrator----将“帐户已禁用”的勾去掉,注销当前用户,就可以登录内置管理员帐户了。 四、其他说明 1:制作后工作分区TEMPWIM内是临时WIM文件,自己决定要不要删除。 2:不做32位与64位的合集,因为这样将导致原生支持64位UEFI启动的功能丧失,分开制作更好。 3:内置管理员版本可以实现一站式无人值守安装,中间无需人工干预,该用户管理权限也大,不过在应用上有限制。所以,使用此版本,安装后进入桌面,可以再建立一个普通管理员帐户,双用户使用比较理想。 方法:WIN+X键----计算机管理----系统工具----本地用户和组---用户--(右键,新用户)---双击新用户名--隶属于--添加--高级--立即查找---选中Administrators(组)--确定---注销当前用户就可以使用新用户名登录了。

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧