Koe*_*ich 8 windows timeout batch-file
我错过了Windows内部"超时"命令的更改吗?
我有一个批处理文件很长一段时间,它显示了程序的版本号.我添加了timeout命令以保持CMD窗口打开几秒钟.所以我的批处理文件现在看起来像这样:
context -version
timeout 7
Run Code Online (Sandbox Code Playgroud)
这工作正常但是由于某些Windows更新(显然),CMD窗口直接关闭,好像超时命令不再起作用.当我从CMD窗口启动文件时,我收到一条消息:
D:\ CTX> timeout 7
尝试'timeout --help'以获取更多信息.
该文件就像我创建它一样,但这种行为对我来说是新的.
所以有人能告诉我这里出了什么问题吗?
我相信你可能已经获得了不同的版本,timeout因为帮助提示--help是一个\*nixy样式选项说明符.
从提示中尝试
where /T timeout.*
Run Code Online (Sandbox Code Playgroud)
应该列出timeout版本,path并可能有助于找到流氓版本.
TIMEOUT不是cmd.exe(Windows命令解释器)的内部命令,如FOR或DIR.
它是一个外部命令,表示控制台应用程序位于Windows目录中%SystemRoot%\System32.
在timeout没有文件扩展名且没有完整路径的情况下使用时,Windows命令解释程序首先在当前目录中搜索timeout.*具有在环境变量PATHEXT中列出的文件扩展名的文件.
如果在当前目录中找不到此类文件,Windows命令解释程序将继续timeout.*使用PATHEXT中列出的文件扩展名搜索环境变量PATH中定义的目录.
在Windows Vista和更高版本的Windows上,系统PATH定义为:
%SystemRoot%\system32;%SystemRoot%\system32;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;
Run Code Online (Sandbox Code Playgroud)
因此,通常首先%SystemRoot%\System32\timeout.exe在timeout批处理文件中使用它.
但是,如果当前目录包含一个文件,其名称timeout.*具有在环境变量PATHEXT中列出的文件扩展名,或者PATH在本地或系统范围内由安装程序重新定义,安装程序将其他目录路径放在开头,而不是将它们附加到末尾,并且其中一个目录包含一个timeout.*文件,Windows命令解释程序运行此可执行文件或脚本.
解决这个问题的建议:
在批处理文件中使用,%SystemRoot%\System32\timeout.exe因为Windows命令解释器不能搜索此可执行文件,并且不能错误地timeout执行错误,除了环境变量SystemRoot在本地修改,这与PATH操作相比是非常不可能的.
打开Windows 控制面板-系统-高级系统设置(在左边蓝色链接),选择标签高级,点击按钮环境变量...,在列表下半部搜索系统变量的路径,选择这个环境变量,点击编辑,并将所有目录路径向左或向上移动(取决于Windows版本)%SystemRoot%\system32到目录列表的末尾.
请向应用程序或软件包的作者报告哪些修改了系统PATH并在开头插入了他们的目录路径,而不是在结尾处附加有关Windows 系统PATH的错误修改.
正如Magoo所写的那样:timeout.*由于输出帮助声明,从Unix到Windows 的移植显然在你的Windows机器上执行.要在Windows上获得有关命令的帮助,必须通常使用参数执行命令,/?而不是使用-h或--help在Unix上执行.
| 归档时间: |
|
| 查看次数: |
5357 次 |
| 最近记录: |