无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 9271|回复: 13
打印 上一主题 下一主题

[已解决] 求一个批处理

[复制链接]
跳转到指定楼层
1#
发表于 2018-7-7 20:25:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 有阴也有阳 于 2018-7-9 19:58 编辑


        求一个批处理——在系统中运行,不是在PE中运行:

        自动复制与此批处理在同一文件夹的某一个程序到系统桌面,等待3秒后运行这个复制到系统桌面的程序。

        (设这个批处理所在的文件夹为Y文件夹,在Y文件夹里面的程序为X.exe。)


                                                                                                            谢谢!!!


        最后成功运行的批处理如下:

@echo off
copy "%~dp0\理顺盘符x64.exe" "%USERPROFILE%\desktop\理顺盘符x64.exe"
pecmd wait 3000
call "%USERPROFILE%\desktop\理顺盘符x64.exe"

        原来的运行命令是“start”,但却不能正常运行“理顺盘符x64.exe”,后来我忽然悟到“理顺盘符x64.exe”实际应该是一个bat程序,其运行命令应该用“call”,

一试果然成功。

        等待3秒的命令原来是:

        ping -n 3 127.1>nul

        后来考虑到这是刚一给电脑装完系统后理顺电脑系统的盘符用的,万一网卡驱动不合适,没装上,用这个命令延时3秒就行不通,故改用:

        pecmd wait 3000

        (实测成功延时了3秒——估计“理顺盘符x64.exe”里面有可能集成了“pecmd”。)

        这样即使网卡驱动没有装上也不影响延时3秒的执行。

        对了!“理顺盘符x64.exe”要求必须在C盘中运行,可它本来在我的G4D的启动U盘中放着的,所以才要复制到C盘——桌面,然后再运行,延时3秒,是因为复制

程序是要花时间的,防止程序还没有复制完,程序的运行命令却已经发出......

        最后感谢nttwqz网友的热心帮助,谢谢!!!

        附:最后完善的批处理:

        运行“理顺盘符x64.exe”.bat:

@echo off
copy "%~dp0\理顺盘符x64.exe" "%USERPROFILE%\desktop\理顺盘符x64.exe"
pecmd wait 3000
call "%USERPROFILE%\desktop\理顺盘符x64.exe"
pecmd wait 2000
start "" ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
del /f /q "%USERPROFILE%"\desktop\理顺盘符x64.exe
exit

        程序流程:

        1.复制“理顺盘符x64.exe”到桌面。

        2.等待3秒。

        3.运行桌面的“理顺盘符x64.exe”。

        4.等待2秒。

        5.打开“计算机”窗口查看盘符整理的情况。

        6.删除复制到桌面的“理顺盘符x64.exe”程序。

        7.退出。

        实测的结果是一到“ 3.运行‘理顺盘符x64.exe’”整理盘符后,启动U盘的盘符只要一变,后面的:

        4.等待2秒。

        5.打开“计算机”窗口查看盘符整理的情况。

        6.删除复制到桌面的“理顺盘符x64.exe”程序。

        7.退出。

        就都不执行了,
本人水平业余爱好+小白,没办法,只好分成2个批处理来完成全部的功能:

        1.运行“理顺盘符x64.exe”.bat:

@echo off
copy "%~dp0\理顺盘符x64.exe" "%USERPROFILE%\desktop\理顺盘符x64.exe"
copy "%~dp0\64.bat" "%USERPROFILE%\desktop\64.bat"
pecmd wait 3000
call "%USERPROFILE%\desktop\64.bat"

        2.64.bat:

@echo off
call "%USERPROFILE%\desktop\理顺盘符x64.exe"
pecmd wait 2000
start "" ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
del /f /q "%USERPROFILE%"\desktop\理顺盘符x64.exe
del /f /q "%USERPROFILE%"\desktop\64.bat
exit

        程序流程:

        a.复制“理顺盘符x64.exe”到桌面,复制“64.bat”到桌面。

        b.等待3秒。

        c.运行桌面的“64.bat”。

        d.运行桌面的“理顺盘符x64.exe”。

        e.等待2秒。

        f.打开“计算机”窗口查看盘符整理的情况。

        g.删除复制到桌面的“理顺盘符x64.exe”程序,删除复制到桌面的“64.bat”程序。

        h.退出。

        实测完美成功。

        后来在实践中发现,批处理在执行复制命令时,是在要复制的文件都已经复制完成后再开始执行下一条命令,所以在执行复制文件的命令的下

面再加一条等待3秒钟的命令就没有必要,故而予以取消:

        1.运行“理顺盘符x64.exe”.bat:

@echo off
copy "%~dp0\理顺盘符x64.exe" "%USERPROFILE%\desktop\理顺盘符x64.exe"
copy "%~dp0\64.bat" "%USERPROFILE%\desktop\64.bat"
call "%USERPROFILE%\desktop\64.bat"

        2.64.bat:

@echo off
call "%USERPROFILE%\desktop\理顺盘符x64.exe"
pecmd wait 2000
start "" ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
del /f /q "%USERPROFILE%"\desktop\理顺盘符x64.exe
del /f /q "%USERPROFILE%"\desktop\64.bat
exit

2#
发表于 2018-7-7 20:51:55 | 只看该作者
@echo off
copy /y "%~dp0\x.exe" "%userprofile%\desktop\"
ping -n 3 127.1>nul
start "%userprofile%\desktop\x.exe"

点评

大大批处理 127.1>nul这一条是什么意思????请指教  详情 回复 发表于 2018-11-15 20:45
已经成功解决,详见本帖,感谢你的热心帮助!!!  详情 回复 发表于 2018-7-8 13:43
实际运行的批处理如下: @echo off copy "%~dp0\理顺盘符x64.exe" "%USERPROFILE%\desktop\理顺盘符x64.exe" ping -n 3 127.1>nul start "%USERPROFILE%\desktop\理顺盘符x64.exe" 能正常  详情 回复 发表于 2018-7-8 13:06
"%~dp0\x.exe" 这个\是多余的  发表于 2018-7-7 22:43
回复

使用道具 举报

3#
发表于 2018-7-7 20:55:20 | 只看该作者
未测试,如果需要无限循环的话,末尾加

%0
回复

使用道具 举报

4#
 楼主| 发表于 2018-7-8 13:06:35 | 只看该作者
nttwqz 发表于 2018-7-7 20:51
@echo off
copy /y "%~dp0\x.exe" "%userprofile%\desktop\"
ping -n 3 127.1>nul

        实际运行的批处理如下:

@echo off
copy "%~dp0\理顺盘符x64.exe" "%USERPROFILE%\desktop\理顺盘符x64.exe"
ping -n 3 127.1>nul
start "%USERPROFILE%\desktop\理顺盘符x64.exe"

        能正常复制“理顺盘符x64.exe”到桌面,也能正常地等待3秒钟,但就是不能运行“理顺盘符x64.exe”。

                                                                                  谢谢!!!
回复

使用道具 举报

5#
 楼主| 发表于 2018-7-8 13:43:40 | 只看该作者
nttwqz 发表于 2018-7-7 20:51
@echo off
copy /y "%~dp0\x.exe" "%userprofile%\desktop\"
ping -n 3 127.1>nul

已经成功解决,详见本帖,感谢你的热心帮助!!!
回复

使用道具 举报

6#
发表于 2018-7-8 18:16:47 | 只看该作者
Microsoft Windows [版本 10.0.16299.431]
(c) 2017 Microsoft Corporation。保留所有权利。

C:\Users\Slore>start /?
启动一个单独的窗口以运行指定的程序或命令。

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
      [command/program] [parameters]

    "title"    在窗口标题栏中显示的标题。
回复

使用道具 举报

7#
发表于 2018-8-24 21:38:17 | 只看该作者
用timeout命令可以不要pecmd
不过pecmd挺强大的,另外可以试下创建快捷方式或者移动文件的办法省下点点空间
回复

使用道具 举报

8#
发表于 2018-9-17 10:18:03 | 只看该作者
好复杂,学习学习
回复

使用道具 举报

9#
发表于 2018-11-6 22:01:24 | 只看该作者

谢谢楼主分享技术资料!!很感兴趣!!
回复

使用道具 举报

10#
发表于 2018-11-15 20:45:59 | 只看该作者
nttwqz 发表于 2018-7-7 20:51
@echo off
copy /y "%~dp0\x.exe" "%userprofile%\desktop\"
ping -n 3 127.1>nul

大大批处理 127.1>nul这一条是什么意思????请指教
回复

使用道具 举报

11#
发表于 2018-11-15 21:08:21 | 只看该作者
无需理顺盘符64.exe
pecmd 自身即可理顺盘符
回复

使用道具 举报

12#
发表于 2018-11-15 21:11:03 | 只看该作者
>nul  将执行正确的信息输出到空设备,即不显示ping命令指令正确结果
2>nul  将错误的信息输出到空设备

>nul 2>nul 正确错误都不显示

ping -n 3 127.1>nul 静默延时3秒

点评

谢谢大大 学习了!  详情 回复 发表于 2018-11-15 23:01

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 很给力!

查看全部评分

回复

使用道具 举报

13#
发表于 2018-11-15 23:01:19 | 只看该作者
nttwqz 发表于 2018-11-15 21:11
>nul  将执行正确的信息输出到空设备,即不显示ping命令指令正确结果
2>nul  将错误的信息输出到空设备

...

谢谢大大 学习了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-1 00:40

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表