找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 35152|回复: 14

[其他] [已解决]批处理如何最小化调用自身?

[复制链接]
发表于 2012-5-4 10:23:26 | 显示全部楼层 |阅读模式
怎样才能让批处理最小化运行呢?我知道利用vbs可以让它后台。也知道批处理自身有一个命令是start /min
可是,问题来了:
  1. start /min %0
  2. @echo off
  3. start /w 123.exe
  4. start 234.exe
  5. exit
复制代码
我的原意是想让本批处理最小化运行后退出。可是,这样写是不对的。直接利用start /min %0 调用自身,发现它只是调用了一个空的窗口最小化在下面,而且它还不会自动退出。求各位大侠解决!不胜感激啊!
师者,传道,授业,解惑也!
各位大师!指点迷津啊!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2012-5-4 13:11:49 | 显示全部楼层
怎么没有人理我?孤星大大呢?
发表于 2012-5-4 15:13:50 | 显示全部楼层
因为你没有添加判断,命令循环重复执行了,而没有退出来。
 楼主| 发表于 2012-5-4 15:42:50 | 显示全部楼层
回复 3# cjiabing


    大大,加了也没有用啊!不然,大大把代码贴出来,我试试……
发表于 2012-5-4 16:44:56 | 显示全部楼层
回复 4# lijinpengying


    那就是没加对。代码贴出来,大家帮你改改。
 楼主| 发表于 2012-5-4 17:37:51 | 显示全部楼层
回复 5# gawk

@echo off &color 1f&title shiyan
if exist %0 start /min %0
@echo off
start /w 123.exe
start 234.exe
exit
其实我就是想达到最小化运行这个程序,运行完毕后退出。不要用vbs把它后台哈!
我今天做了很多实验,就是不能达到我要的效果。
这样写的代码,总是有一个窗口最小化在下面。不会自动退出。这个窗口就是这个批处理。
发表于 2012-5-4 21:01:43 | 显示全部楼层
本帖最后由 yangfengoo 于 2012-5-4 21:06 编辑

start /w 123.exe
start 234.exe

start /w 123.exe要这个执行结束,才会退出 去掉/w
发表于 2012-5-4 22:19:29 | 显示全部楼层

  1. @echo off
  2. if  "%~1"=="" start /min %0 run
  3. ::接收命令参数,如果没有参数则运行自身,否则进行下一步
  4. start /w 123.exe
  5. ::start /w 会等待123.exe结束后才运行下一行命令
  6. start 234.exe
  7. exit
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2012-5-5 01:58:35 | 显示全部楼层
回复 1# lijinpengying


    版主让你判断的是位置参数%1
发表于 2012-5-5 06:02:10 | 显示全部楼层
1,没考虑到 %0 含双引号时会发生的错误
2、逻辑上是死循环

  1. %1 start /min "" %0 :
复制代码
 楼主| 发表于 2012-5-5 09:16:51 | 显示全部楼层
在此先感谢各位大大的帮助。但是呢?问题还是没有解决……
不知道各位大大在自己电脑上试过没有,我在电脑上以调用两个批处理为例,当两个批处理执行完毕后,最小化掉的那个窗口还是没有自动退出啊?
我想要它执行完后自动退出,可惜不行啊?请问还有哪位大大有高见啊!先拜上一拜…!
发表于 2012-5-5 11:11:04 | 显示全部楼层
  1. @echo off
  2. if  "%~1"=="ext" goto start
  3. start /min %~fs0 ext & exit
  4. :start
  5. start /w 123.exe
  6. start 234.exe
  7. exit
复制代码
发表于 2012-5-5 14:19:03 | 显示全部楼层
刚才试了一下代码 差点被害死,不得不在中间加了一个pause

@echo on
::pause>nul

setlocal enabledelayedexpansion
if "%~1"=="" start /min "" %~f0 (任意字母) && exit
楼主以上代码可以正常运行

问高手:%~df0 %~f0 %~0  用这些参数要注意什么
 楼主| 发表于 2012-5-5 15:18:44 | 显示全部楼层
没有想到这个小小的问题各位英雄齐聚啊!哈哈!先行拜谢
 楼主| 发表于 2012-5-5 15:28:39 | 显示全部楼层
如何把问题标为已解决?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 01:03 , Processed in 0.021725 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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