Windows 10与Windows 7中的批处理文件调用命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows 10与Windows 7中的批处理文件调用命令相关的知识,希望对你有一定的参考价值。
我有一个使用Call函数的批处理脚本,但是当我在Windows 7计算机和Windows 10计算机上运行时,我注意到了不同的行为。我在这个问题上找不到特别针对Windows版本之间的差异。
脚本很简单:
@echo off
chdir /D "%~dp0"
call "C:Usersusernamedesktop empatch.bat" >Test.txt
pause
在batch.bat中,有一行java:
@echo off
cd /D "%~dp0"
java -classpath "../jars/*" com.scraper_program.cui.Main show --log="../conf/log.settings"
在Windows 7上,这正确地将调用java的文本输出到文件Test.txt中;但是在Windows 10上,它会在新窗口中打开java部分,并且无法重定向到文本文件。
打开的新窗口左上角有一个“java”图标,因此看起来Windows10可能因某些原因对Java部分的处理方式不同。
关于脚本位置和变量的所有内容在两台机器之间是相同的。反正有没有像在Windows 7中那样将脚本输出到Windows 10中的文本文件?
编辑:
问题出在java控制台上。这是一个批处理文件,代码无所谓所以以上所有基本上都是毫无价值的信息:(
只需在命令行中输入“java -help”即可重现该问题。在Windows 7机器上,它将帮助文本直接输出到控制台,而在我的Windows 10机器上,它会打开一个新窗口,执行并立即关闭。我在这里发现了另一个同样问题的帖子:Java execution pops a new window and immediately disappears
然而,没有解决方案。
将java.exe文件直接拖放到控制台中,以便提供exe的完整路径,从而得到相同的结果 - 它会在屏幕上短暂闪烁并关闭。
我还验证了控制面板中的Java设置在两个系统之间是相同的,并且与Java.exe相同的环境路径是相同的。
编辑2:
根据要求,这是我的环境变量。
来自集合路径的输出:
Path=C:ProgramDataOracleJavajavapath;C:Program Files (x86)InteliCLS Client;C:Program FilesInteliCLS Client;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:WINDOWSSystem32WindowsPowerShellv1.0;C:Program FilesIntelWiFiin;C:Program FilesCommon FilesIntelWirelessCommon;C:Program Files (x86)IntelIntel(R) Management Engine ComponentsDAL;C:Program FilesIntelIntel(R) Management Engine ComponentsDAL;C:Program Files (x86)IntelIntel(R) Management Engine ComponentsIPT;C:Program FilesIntelIntel(R) Management Engine ComponentsIPT;C:Program FilesMicrosoft DNXDnvm;C:Program Files (x86)Windows Kits8.1Windows Performance Toolkit;C:Program FilesMicrosoft SQL Server130ToolsBinn;C:Program Files (x86)Gpg4win..GnuPGin;C:Drivers
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
从Java输出:
C:ProgramDataOracleJavajavapathjava.exe
我找到了一种方法来从java行调用输出到同一窗口并通过以管理员身份运行命令行(右键单击 - >以管理员身份运行)正确地重定向到文本文件。
一旦我发现了,我按照这里发布的解决方案为bat文件创建了一个快捷方式:How to code a BAT file to always run as admin mode?
我仍然不确定为什么我需要在一台机器而不是另一台机器上进行这项工作,所以它并不完美,但确实有效。
以上是关于Windows 10与Windows 7中的批处理文件调用命令的主要内容,如果未能解决你的问题,请参考以下文章
使用批处理文件创建和启动 Windows 7 或 10 服务?