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

[文件操作] 咨询Start命令参数“I”的用法

[复制链接]
发表于 2011-8-13 11:15:37 | 显示全部楼层 |阅读模式
研究了“START    /I”很久,但一直不得其道,很想搞清楚“START    /I ”的用法。
“I”参数的解释如下:
START    I           新环境是传递给 cmd.exe 的原始环境,而不是当前环境。
新环境、原始环境、当前环境分别是什么?能否举例说明?
最好举一个实例来说明如何应用“START   /I”。谢谢!

附带两个小问题,可以不回答:
1、START   "title"     在窗口标题栏中显示的标题。
这个标题是指给新建进程创建或命名为“title”,还是指“title”必须符合或命名为“title”?
前者是指作者有自由权,可以随意命名“title”,后者指命名权由程序自己决定。
这里是何种情况?请举例说明。因为有时候我发现我无法给新进程标题命名。
2、以下几个参数在一般使用中有什么意义?想了解下假如我运行一个bat的和其它bat的有什么区别。
    SEPARATE    在分开的空间内开始 16 位 Windows 程序
    SHARED      在分共享的空间内开始 16 位 Windows 程序
    LOW         在 IDLE 优先级类别开始应用程序
    NORMAL      在 NORMAL 优先级类别开始应用程序
    HIGH        在 HIGH 优先级类别开始应用程序
    REALTIME    在 REALTIME 优先级类别开始应用程序
    ABOVENORMAL 在 ABOVENORMAL 优先级类别开始应用程序
    BELOWNORMAL 在 BELOWNORMAL 优先级类别开始应用程序
发表于 2011-8-13 11:49:57 | 显示全部楼层
本帖最后由 CrLf 于 2011-8-13 11:52 编辑

子进程默认继承父进程的变量环境,而用 start /i 启动的子进程不继承
  1. set test=123
  2. start cmd /v /k echo !test!
  3. start /i cmd /v /k echo !test!
复制代码

评分

参与人数 2PB +6 技术 +1 收起 理由
cjiabing + 6 乐于助人
Hello123World + 1 受益苦多!

查看全部评分

发表于 2011-8-13 17:41:42 | 显示全部楼层
“title”名字可以自定义,title设置的是cmd窗口的标题名,而不是启动的程序的标题名。

SEPARATE    在分开的空间内开始 16 位 Windows 程序
    SHARED      在分共享的空间内开始 16 位 Windows 程序
::这个两个不清楚,16位的进程可能没接触过,可能接触过都不知道它是16位的。
    LOW         在 IDLE 优先级类别开始应用程序
    NORMAL      在 NORMAL 优先级类别开始应用程序
    HIGH        在 HIGH 优先级类别开始应用程序
    REALTIME    在 REALTIME 优先级类别开始应用程序
    ABOVENORMAL 在 ABOVENORMAL 优先级类别开始应用程序
    BELOWNORMAL 在 BELOWNORMAL 优先级类别开始应用程序
::优先级可以在 任务管理器-进程选项卡中看到,以前设置过,不过似乎作用不大。
从上到下优先级增大,优先级越大,越早进入cpu缓存供cpu处理。
发表于 2011-8-13 17:49:10 | 显示全部楼层
回复 3# Hello123World


CPU比较忙的时候才能体验到优先级
发表于 2011-8-13 17:54:59 | 显示全部楼层
回复 3# Hello123World


    调高 explorer 优先级,或者降低那些大型软件的优先级,从此桌面不假死
发表于 2011-8-13 17:57:45 | 显示全部楼层
原来如此,多谢楼上两位。
从此桌面不假死——很诱人。
 楼主| 发表于 2011-8-13 18:03:29 | 显示全部楼层
总结一下:
  1. @echo off
  2. ::start /i 参数的应用。
  3. ::默认start打开的新cmd环境会继承原(start所在)cmd环境。有助于原始环境将变量参数传递给新环境。
  4. ::使用start /i 后,关闭继承通道,新cmd环境与原cmd环境不同。使得新cmd不受原cmd影响,获得相对独立环境。
  5. ::如何将变量参数从新环境传递回原始环境是个问题。
  6. ::环境指环境变量、延迟变量等。

  7. set test=新cmd继承原cmd环境。
  8. ::设置一个变量,观察该变量在两个环境中的变化。

  9. echo 新cmd环境与原cmd环境相同,新cmd继承原cmd环境。
  10. start cmd /v /k echo !test!
  11. pause

  12. echo 新cmd环境与原cmd环境不同,两者无关。
  13. start /i cmd /v /k if not defined test (echo 新环境与原环境无关。) else (echo !test!)
  14. pause
复制代码
发表于 2012-12-3 20:43:05 | 显示全部楼层
找了好久关于 start /i参数讲解的教程,总算在这里找到和我有一样疑问的帖子了,这里真是个交流的好地方啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 03:52 , Processed in 0.018574 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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