求一个批处理
本帖最后由 有阴也有阳 于 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网友的热心帮助,谢谢!!!{:1_186:}
附:最后完善的批处理:
运行“理顺盘符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
@echo off
copy /y "%~dp0\x.exe" "%userprofile%\desktop\"
ping -n 3 127.1>nul
start "%userprofile%\desktop\x.exe" 未测试,如果需要无限循环的话,末尾加
%0 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”。
谢谢!!! nttwqz 发表于 2018-7-7 20:51
@echo off
copy /y "%~dp0\x.exe" "%userprofile%\desktop\"
ping -n 3 127.1>nul
已经成功解决,详见本帖,感谢你的热心帮助!!!{:1_195:} Microsoft Windows [版本 10.0.16299.431]
(c) 2017 Microsoft Corporation。保留所有权利。
C:\Users\Slore>start /?
启动一个单独的窗口以运行指定的程序或命令。
START ["title"]
"title" 在窗口标题栏中显示的标题。 用timeout命令可以不要pecmd
不过pecmd挺强大的,另外可以试下创建快捷方式或者移动文件的办法省下点点空间{:1_186:} 好复杂,学习学习
谢谢楼主分享技术资料!!很感兴趣!! nttwqz 发表于 2018-7-7 20:51
@echo off
copy /y "%~dp0\x.exe" "%userprofile%\desktop\"
ping -n 3 127.1>nul
大大批处理 127.1>nul这一条是什么意思????请指教 无需理顺盘符64.exe
pecmd 自身即可理顺盘符 >nul将执行正确的信息输出到空设备,即不显示ping命令指令正确结果
2>nul将错误的信息输出到空设备
>nul 2>nul 正确错误都不显示
ping -n 3 127.1>nul 静默延时3秒 nttwqz 发表于 2018-11-15 21:11
>nul将执行正确的信息输出到空设备,即不显示ping命令指令正确结果
2>nul将错误的信息输出到空设备
...
谢谢大大 学习了!
页:
[1]