我在命令提示符下运行以下批处理文件(.bat)文件,也是双击,但在两种情况下都会提供不同的输出。
@echo off
echo The user name is %USERNAME% > log.txt
set instDir=%cd%
set Prop_TXT="%instDir%\bin\packages\sometextfile.txt"
findstr /C:StringToFind %Prop_TXT% >> log.txt
for /F "usebackq tokens=1,2,3 delims=/" %%i in (`findstr javavm %Prop_TXT%`) do (
set DIRE=%%j
"%instDir%\bin\%DIRE%\bin\java.exe" -version 2>> log.txt
)
在命令提示符下,log.txt
使用Java版本提供正确的输出。
双击,log.txt
显示“系统无法找到指定的路径。”
请帮帮我。我做了很多googe搜索,但找不到解决方案。
答案 0 :(得分:1)
首先:设置instDir =%cd%
如果您将当前路径保存在变量“CD”中,为什么要将其再次存储在“instdir”var?
中第二:您需要在FOR中扩展变量,您可以使用setlocal enabledelayedexpansion命令。
第三:在脚本中使用两个%%时,在命令提示符中需要使用一个%符号,因此“FOR %% i”或“SET DIRE =% %j“无法直接在命令提示符下继续。
试试这个:
@echo off
echo The user name is %USERNAME% > log.txt
set Prop_TXT=".\bin\packages\sometextfile.txt"
findstr /C:StringToFind %Prop_TXT% >> log.txt
for /F "usebackq tokens=1,2,3 delims=/" %%i in (`findstr javavm %Prop_TXT%`) do (
set "DIRE=%%j"
Call ".\bin\%%DIRE%%\bin\java.exe" -version 2>> log.txt
)