![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-01 11:29 |
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,279 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何这样执行批处理代码?从txt和从粘贴板 |
| 可打印版本 3,558 / 35 |
| 第31楼 slore | 发表于 2009-09-12 15:33 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
Option Explicit
Dim strClipb Dim objIE Dim WshShell,oExec Dim TempBat Set objIE = CreateObject("HtmlFile") strClipb = objIE.parentWindow.clipboardData.getData("text") 'WScript.Echo strClipb 这个可能测试时候写的,就是你说的弹窗,注释掉就完了。 If strClipb = "" Then Set objIE = Nothing WScript.Quit End If '剪贴板如果为空,不执行命令 Set WshShell = CreateObject("WScript.Shell") CreateBat strClipb '创建临时文件 WshShell.Run "%comspec% /c """ & TempBat & """",1,True '等待脚本执行完毕 Dim objFSO Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.DeleteFile TempBat,True '删除临时脚本 Set objFSO = Nothing Set objIE = Nothing Set WshShell = Nothing Sub CreateBat(strCopy) '创建BAT文件 Dim objFSO, MyFile Set objFSO = CreateObject("Scripting.FileSystemObject") TempBat = objFSO.GetTempName & ".bat" Set MyFile = objFSO.CreateTextFile(TempBat , True) MyFile.Write strCopy '将剪贴板内容写入临时文件 MyFile.Close Set objFSO = Nothing Set MyFile = Nothing End Sub 删除文件在执行之后做。而不是写到BAT里面执行。。。因为。。。如果在代码最下面写个 :XXX XXX XXX 上面调用这个XXX本不应该执行删除的,如果在最后追加del %0遇到带call 标签的bat就不通用了。 |
|
| 第32楼 loquat | 发表于 2009-09-13 02:36 |
| 初级用户 发帖 80 积分 81 | |
Originally posted by slore at 2009-9-12 15:33: 这段没太明白。 反正目前call的代码,这个可以完美执行临时bat文件,执行完后才删除 我的意思是,难道start命令就不能做到执行完后再删除临时文件? |
|
| 第33楼 loquat | 发表于 2009-09-13 02:47 |
| 初级用户 发帖 80 积分 81 | |
|
估计start要像call那样删除临时文件又不提示错误是不可能了。
start之后理解删除文件,可以执行成功,但是会提示错误。 但是像这样是没问题的。 1.bat 为何,直接del %0就没问题,用echo 写出的bat,再用start调用打开就会有错误提示呢? |
|
| 第34楼 loquat | 发表于 2009-09-13 02:53 |
| 初级用户 发帖 80 积分 81 | |
Option Explicit 你给的这部分,既然上面蓝色部分已经执行过bat了,下面红色部分的还有必要保存吗? 另外,我还是觉得保留原来的那个pause比较好,因为现在的效果是屏幕一闪就没了。除非剪贴板最后有pause结尾。 还是希望有那种,执行完剪帖板了还能继续在里面手动输入命令的。 |
|
| 第35楼 loquat | 发表于 2009-09-13 02:54 |
| 初级用户 发帖 80 积分 81 | |
|
感谢楼上一直在帮我学习……
|
|
| 第36楼 slore | 发表于 2009-09-13 03:52 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
遇到问题记得echo on……start也不会有错的。 @echo off
call :bugtest 1 call :bugtest 2 echo 你能看到我麽? echo 我暂停了几次呢? pause exit :bugtest echo test bug %1 echo del %0 是文件麽?你要del? rem 多加个pause结果如何呢? pause 你自己测试最后3行带和不带的效果。。。。call不仅仅是调用bat而已。。。 你要暂停的话,调用就用/k不要用/C就行了。 红色的部分是过程CreateBat 代码中出现CreateBat的地方才执行这里。 蓝色执行完脚本就结束了。 CreateBat是在蓝色的部分之前调用的。 |
|
| 上一页 1 2 3 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |