|
本帖最后由 有阴也有阳 于 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
|
|