我稍后尝试访问TOMCAT_VER的值,但它显示为空字符串.
if exist "%_REALPATH%\tomcat-%TOMCAT_VER2%" (
set CATALINA_HOME=%_REALPATH%\tomcat-%TOMCAT_VER2%
set TOMCAT_VER=%TOMCAT_VER2%
echo "%TOMCAT_VER%"
) else if exist "%TOMCAT_VER2%" (
set CATALINA_HOME="%TOMCAT_VER2%"
set TOMCAT_VER="%TOMCAT_VER2%"
echo "%TOMCAT_VER%"
)
Run Code Online (Sandbox Code Playgroud)
为了进一步调试,我在它设置的下方插入了一个echo语句,但它似乎不起作用.在禁用echo off的情况下,我可以看到显示这些变量设置的语句,但我似乎无法将它们打印出来.
我正在尝试使用默认值提示用户输入批处理文件(如果用户没有输入输入).
我正在尝试如下:需要默认值:1到头.
set rev1=1
set rev2=HEAD
set /p rev1="start rev: default is %rev1% "
set /p rev2="end rev: default is %rev2% "
Run Code Online (Sandbox Code Playgroud)
但是提示显示start rev: default is而不是start rev: default is 1.
请帮忙.
的doskey命令分隔符($T当该命令不产生输出)产生一个空行。
C:\> set "a="
C:\> set "b="
C:\> doskey test=set "a=foo" $T set "b=bar" $T echo ^%a^% ^%b^%
C:\> test
C:\>
C:\> foo bar
Run Code Online (Sandbox Code Playgroud)
注意发出后的空行test,这会影响可读性。
有一个众所周知的^?替代方法$T,它不添加空格,但新命令不继承环境变量。
C:\> set "a="
C:\> set "b="
C:\> doskey test=set "a=foo" ^& set "b=bar" ^& echo ^%a^% ^%b^%
C:\> test
%a% %b%
Run Code Online (Sandbox Code Playgroud)
这里没有空格,反正set启动新命令后无效。
如何去除空行?
更新: 删除了“创建一个单独的进程”行,因为它是错误的。
[接收整数作为输入的简单程序,如果该数字是微不足道则打印]
当我运行这个我得到一个错误"(此时出乎意料)
@echo off
set /a i=2
set /p input="enter an integer: "
set /a n=input
set /a t=n/2
:loop1
if %t% LSS %i% (
goto trivial
) else (
set /a t0=n%i
if %t0%==0 (
goto notTrivial
) else (
set /a i=i+1
goto loop1
)
)
:trivial
echo %n% is trivial
goto endd
:notTrivial
echo %n% is not trivial
:endd
pause > nul
Run Code Online (Sandbox Code Playgroud)
但是当我在loop1中删除else语句时(这是不必要的(因为if if中的goto命令))它可以工作
:loop1
if %t% LSS %i% (
goto trivial
)
set /a t0=n%i
if …Run Code Online (Sandbox Code Playgroud)