标题: [文件操作] [已解决]怎样让一个批处理关闭后,等1秒再次打开 [打印本页]
作者: 5i365 时间: 2021-10-26 11:06 标题: [已解决]怎样让一个批处理关闭后,等1秒再次打开
本帖最后由 5i365 于 2021-10-29 18:46 编辑
情况是这样的, 有个批处理执行后, 需要退出一下, 然后再打开它, 才可以继续执行, 否则就无法继续执行后面代码, 求高手支招, 提前感谢!
想了一个办法, 在退出批处理前, 设置一下计划任务两秒后打开自身, 然后删除计划任务,继续执行, 但是不知道代码如何写
试过重定向一个bat倒计时,然后打开自身, 这样也不行, 需要关闭命令行窗口后,再执行才可以, 重定向的方法, 命令行窗口一直都在运行, 只是前后接上了
代码如下: 因为要安装exe才能测试出来, 不然会死循环, 所以大文件在后面的9楼, 问题已经解决, 看12楼- @echo off
- color 1f
- echo.
- echo GIT 版本:
- call git --version 2>nul
- if %errorlevel% == 0 (
- echo.
- echo GIT 已安装
- echo ______________________________
- ) else (
- echo.
- echo GIT 未安装, 开始安装
- echo ______________________________
-
- Git-2.33.0.2-64-bit.exe /VERYSILENT
- cls
- echo.
- echo GIT 已安装
- echo ______________________________
- )
-
- echo.
- echo NPM 版本:
- call npm --version 2>nul
- if %errorlevel% == 0 (
- echo.
- echo NPM 已安装, 继续执行
- echo ______________________________
-
- ) else (
- echo.
- echo NPM 未安装, 开始安装
- echo ______________________________
-
- MsiExec.exe /i node-v13.14.0-x64.msi /qn
- cls
- echo.
- echo NPM 已安装, 按任意键退出后, 重新打开
- echo ______________________________
- pause
- exit
- REM 此处必须要退出一下才行, 不能直接执行下面的 goto :next 不然下面的:next部分的代码执行时会一直打开新CMD窗口死循环
- )
-
- :next
- echo.
- echo Yarn 版本:
- call yarn --version 2>nul
- if %errorlevel% == 0 (
- echo.
- echo Yarn 已安装
- echo _________________________________________________________
- ) else (
- echo.
- echo Yarn 未安装, 开始安装
- echo _________________________________________________________
-
- npm install -g yarn --registry=https://registry.npm.taobao.org
- echo.
- echo 正在设置环境变量
- echo _________________________________________________________
- setx PATH "%PATH%;C:\Users\%username%\AppData\Local\Yarn\bin"
- echo Yarn 已安装, 继续重启执行
- echo _________________________________________________________
-
- start .\安装git_node.bat
- )
-
- echo.
- echo Yarn 版本:
- call yarn --version 2>nul
- pause
复制代码
作者: Batcher 时间: 2021-10-26 11:35
回复 1# 5i365
请把代码发出来看看能否直接去掉这个限制
作者: yakeyun 时间: 2021-10-27 13:01
本帖最后由 yakeyun 于 2021-10-27 14:17 编辑
回复 1# 5i365
把这个文件放到批处理文件同目录,然后批处理重写一个批处理“test.bat”加入下面代码:
@echo off
strat .\run.bat
timeout /t 5 >nul
start .\test.exe
exit
延时的目的是让run.bat第一次运行到bug位置,其中“run.bat”为你要执行的脚本,最终在同目录下放置一个test.exe和一个test.bat。
test.exe 下载地址:
https://sanli.lanzouw.com/ir4Brvtzswf
https://sanli.lanzoui.com/ir4Brvtzswf
作者: xp3000 时间: 2021-10-27 13:21
本帖最后由 xp3000 于 2021-10-27 13:58 编辑
- @cd "%~dp0"&@echo off&setlocal enabledelayedexpansion
-
- set n=0
- :x
- for /f "delims=" %%a in ('dir /b/a-d/oN "test.exe"') do (
- set fn=%%a&set /a n+=1
- echo 运行命令……
- if !n! EQU 1 start "test.bat"
- if !n! EQU 2 (start %%a & goto :y) else (goto :x)
- )
-
- :y
- echo.
- echo 运行下一个命令……
- pause & exit
复制代码
软件第一时间被360干掉了,不能测试,不知道行不行
作者: yakeyun 时间: 2021-10-27 14:16
本帖最后由 yakeyun 于 2021-10-27 14:27 编辑
回复 4# xp3000
test.exe 是用易语言写的一个控制台,其功能如下:
1.结束CMD进程
2.延时1.5秒
3.运行run.bat
提供一个360免杀版:
https://sanli.lanzouw.com/i2pvhvu3l9e
作者: cmd1152 时间: 2021-10-27 19:45
回复 5# yakeyun
恰好,我安装好 易语言(E语言) 。
作者: 5i365 时间: 2021-10-28 08:34
回复 2# Batcher
感谢回复, 是在别的博客找的安装GIT和NODE的代码, 里面有环境变量的设置, 感觉这个设置有关系,
我稍后整理一下, 贴上来, 只贴代码, 测试不了,或者死循环了,
作者: 5i365 时间: 2021-10-28 08:36
回复 4# xp3000
是同一个批处理, 关了之后, 再开
作者: 5i365 时间: 2021-10-28 09:26
回复 2# Batcher
老大, 文件因为很大, 已经上传文叔叔了, 麻烦楼上诸位高手帮看一下, 建议在虚拟机下运行, 因为不退出的那个批处理会死循环, 感谢
https://ws28.cn/f/6qniucilxv4 复制链接到浏览器打开
作者: xp3000 时间: 2021-10-28 11:55
本帖最后由 xp3000 于 2021-10-28 14:25 编辑
- @cd "%~dp0"&@echo off&setlocal enabledelayedexpansion
-
- set n=0
- :x
- for /f "delims=" %%a in ('dir /b/a-d/oN "测试.exe"') do (set /a n+=1
- echo 运行!n!次命令……
- timeout 2 >nul
- echo.新窗口打开test.bat和%%a
- if !n! EQU 1 start /I /MIN cmd /k "start %%a |echo.间隔10秒退出……&timeout 10&&exit"
- if !n! EQU 2 (start %%a & goto :y) else (echo.& echo 返回重新执行命令…… & echo. & goto :x)
- )
-
- :y
- echo.
- echo 运行下一个命令……
- echo.
- timeout 5 >nul & exit
复制代码
start %%a 后面可以加空格+文件路径,一次打开多个
timeout 10后面可以加&start xxx.bat,在10秒后打开xxx.bat
作者: 5i365 时间: 2021-10-28 12:34
回复 10# xp3000
感谢帮忙, 没太看明白怎么回事, 我的代码问题, 必须要把cmd窗口关上一次才可以生效, 否则就不行
作者: idwma 时间: 2021-10-28 14:19
本帖最后由 idwma 于 2021-10-28 21:55 编辑
- @echo off
- color 1f
- call git --version 2>nul
- if %errorlevel% == 0 (
- echo.
- echo GIT 已安装
- echo ______________________________
- ) else (
- echo.
- echo GIT 未安装, 开始安装
- echo ______________________________
-
- start /w Git-2.33.0.2-64-bit.exe /VERYSILENT
- cls
- echo.
- echo GIT 已安装
- echo ______________________________
- )
- call npm --version 2>nul
- if %errorlevel% == 0 (
- echo.
- echo NPM 已安装, 继续执行
- echo ______________________________
- ) else (
- echo.
- echo NPM 未安装, 开始安装
- echo ______________________________
-
- start /w node-v13.14.0-x64.msi /passive /qr
- cls
- echo.
- echo NPM 已安装, 按任意键退出后, 重新打开
- echo ______________________________
- for /f "tokens=2*" %%i in ('reg query "hklm\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path') do set p=%%j
- for /f "tokens=2*" %%i in ('reg query "hkcu\environment" /v path') do set pp=%%j
- call;set path=%%p%%;%%pp%%
- )
-
- call yarn --version 2>nul
- if %errorlevel% == 0 (
- echo.
- echo Yarn 已安装
- echo _________________________________________________________
- ) else (
- echo.
- echo Yarn 未安装, 开始安装
- echo _________________________________________________________
- call npm install -g yarn --registry=https://registry.npm.taobao.org
-
- )
- pause
复制代码
作者: xp3000 时间: 2021-10-28 14:30
本帖最后由 xp3000 于 2021-10-28 14:34 编辑
我这里直接退出了,没有那些应用,你试试这个行不行
start /I /MIN cmd /k "MsiExec.exe /i node-v13.14.0-x64.msi /qn &timeout 10&&exit"
作者: 5i365 时间: 2021-10-28 14:49
回复 12# idwma
感谢帮忙, 试了一下还是不行, 要手动打开三次才行, 以前是手动打开两次,
作者: 5i365 时间: 2021-10-28 14:50
回复 13# xp3000
只试一个安装, 没有意义, 因为这个批处理, 前一个的安装是后一个安装的基础
作者: idwma 时间: 2021-10-28 15:00
回复 14# 5i365
改了
作者: 5i365 时间: 2021-10-28 15:20
本帖最后由 5i365 于 2021-10-28 15:22 编辑
回复 16# idwma
还是不行, 还是一共要三次才能OK, 以前是两次
作者: 5i365 时间: 2021-10-28 15:22
回复 16# idwma
我这里是学校的还原卡的电脑, 重启后安装的就没有了, 方便测试, 一般的电脑, 安装上还得需要全部卸载才可以试, 有点麻烦
这个脚本, 一共是安装三个程序, 一个git 一个npm 一个yarn , 前两个是最后一个的基础, 前两个在静默安装时也会自动设置环境变量
作者: yakeyun 时间: 2021-10-28 15:27
回复 15# 5i365
测试下看看,多用start /w 或者call ,因为最后一个程序是基于前一个在线下载安装的,所以需要等待执行。
@echo off
color 1f
echo.
echo GIT 版本:
call git --version 2>nul
if %errorlevel% == 0 (
echo.
echo GIT 已安装
echo ______________________________
) else (
echo.
echo GIT 未安装, 开始安装...
echo ______________________________
call Git-2.33.0.2-64-bit.exe /VERYSILENT
cls
echo.
echo GIT 安装完成
echo ______________________________
)
echo.
echo NPM 版本:
call npm --version 2>nul
if %errorlevel% == 0 (
echo.
echo NPM 已安装, 继续执行
echo ______________________________
goto :next
) else (
echo.
echo NPM 未安装, 开始安装...
echo ______________________________
call MsiExec.exe /i node-v13.14.0-x64.msi /qn
echo.
echo GIT 安装完成
)
echo.
echo Yarn 版本:
call yarn --version 2>nul
if %errorlevel% == 0 (
echo.
echo Yarn 已安装
echo _________________________________________________________
) else (
echo.
echo Yarn 未安装, 开始安装...
echo _________________________________________________________
call npm install -g yarn --registry=https://registry.npm.taobao.org
echo.
echo 正在设置环境变量
echo _________________________________________________________
setx PATH "%PATH%;C:\Users\%username%\AppData\Local\Yarn\bin"
echo Yarn 已安装, 继续重启执行
echo _________________________________________________________
)
echo.
echo,全部程序已安装完成
pause>nul
作者: 5i365 时间: 2021-10-28 15:48
回复 19# yakeyun
第一次执行, 最后显示都安装成功了, 再次打开, 闪一下就关了, 单独cmd试了一下, yarn没有安装成功, 也就是说, 上面的代码, 无法安装yarn了, 前面修改过的, 两次或三次都可以安装成功, 只是不能一次成功
作者: yakeyun 时间: 2021-10-28 16:07
回复 20# 5i365
call npm install -g yarn --registry=https://registry.npm.taobao.org
这句代码已经很明显了,前面的两个程序安装成功后,才能识别到npm命令,所以前面两个需要先安装,第三个才能被执行。
作者: 5i365 时间: 2021-10-28 16:20
是的, 所以想办法关闭cmd后, 再自动打开
作者: yakeyun 时间: 2021-10-28 16:29
回复 22# 5i365
方法也好解决,就是把第三个改成网上的直链,然后通过"url"命令获取,调用7z解压完成后静默安装。
作者: yakeyun 时间: 2021-10-28 18:50
回复 22# 5i365
试下这个看看:
@echo off
color 1f
if exist yarn.bat (del yarn.bat)
echo ^echo Yarn 版本:>.\yarn.bat
echo call yarn --version ^2^>nul >>.\yarn.bat
echo if %%errorlevel^%% == 0 ( >>.\yarn.bat
echo ^echo Yarn 已安装 >>.\yarn.bat
echo ^echo _________________________________________________________ >>.\yarn.bat
echo ) else ( >>.\yarn.bat
echo ^echo. >>.\yarn.bat
echo ^echo Yarn 未安装, 开始安装 >>.\yarn.bat
echo ^echo _________________________________________________________ >>.\yarn.bat
echo call npm install -g yarn --registry=https://registry.npm.taobao.org >>.\yarn.bat
echo ^echo. >>.\yarn.bat
echo ^echo 正在设置环境变量 >>.\yarn.bat
echo ^echo _________________________________________________________ >>.\yarn.bat
echo setx PATH "%%PATH^%%;C:\Users\%%username%%\AppData\Local\Yarn\bin" >>.\yarn.bat
echo ^echo Yarn 已安装, 继续重启执行 >>.\yarn.bat
echo ^echo _________________________________________________________ >>.\yarn.bat
echo ^) >>.\yarn.bat
cls
echo.
echo GIT 版本:
call git --version 2>nul
if %errorlevel% == 0 (
echo.
echo GIT 已安装
echo ______________________________
) else (
echo.
echo GIT 未安装, 开始安装...
echo ______________________________
call Git-2.33.0.2-64-bit.exe /VERYSILENT
cls
echo.
echo GIT 安装完成
echo ______________________________
)
echo.
echo NPM 版本:
call npm --version 2>nul
if %errorlevel% == 0 (
echo.
echo NPM 已安装, 继续执行
echo ______________________________
goto :next
) else (
echo.
echo NPM 未安装, 开始安装...
echo ______________________________
call MsiExec.exe /i node-v13.14.0-x64.msi /qn
echo.
echo NPM 安装完成
call yarn.bat
)
if exist yarn.bat (del yarn.bat)
echo.
echo,全部程序已安装完成
echo.
pause>nul
作者: 5i365 时间: 2021-10-28 19:10
本帖最后由 5i365 于 2021-10-28 19:12 编辑
回复 24# yakeyun
感谢, 试了一下, 还是不行, 到最后执行yarm时, 一路跑了很多行, 最后自动关了, 再打开批处理, 也不执行了, 执行到yarn那, 里就自动关了
我最开始的代码, 用起来很稳定的, 唯一不方便的就是, 等关了之后, 再手动打开一下
代码的原作者, 干脆就是两个批处理, 我是合二为一了
作者: yakeyun 时间: 2021-10-28 21:59
本帖最后由 yakeyun 于 2021-10-28 23:08 编辑
回复 25# 5i365
用下面这个放到同级目录,可以不用之前的批处理直接运行run.bat就可以了,实现打开关闭脚本,然后再次打开自身。
https://sanli.lanzouw.com/i9SDEvvu90b
作者: 5i365 时间: 2021-10-29 06:32
回复 26# yakeyun
感谢, 12楼的碉堡了, 完美搞定了,
因为用到了第三方exe, 不太方便 所以没有来及测试
作者: 5i365 时间: 2021-10-29 06:37
回复 12# idwma
本人水太浅, 大侠能否说说问题的关键所在?
作者: idwma 时间: 2021-10-29 14:07
本帖最后由 idwma 于 2021-10-29 14:08 编辑
回复 28# 5i365
也是按你的思路来的呀,34到36行获取路径变量
作者: Batcher 时间: 2021-10-29 14:47
回复 29# idwma
关键的思路就是让软件设置的环境变量在当前的脚本环境中生效。
楼主从开始就进入了一个思维陷阱,误以为:
1、一定要分开两个脚本
2、一定要关闭脚本然后延时再打开
http://bbs.bathome.net/thread-60510-1-1.html#pid247365
作者: 5i365 时间: 2021-10-29 16:28
回复 30# Batcher
感谢指点, 还是不太
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |