有两种可能性。
您忘记%id%
了jstack
拨打电话。
jstack %id% > jstack.txt
因此,整个正确的批处理文件应为:
@echo off
set /p id=Enter ID:
echo %id%
jstack %id% > jstack.txt
和/或2.您确实将其放入代码中(并且忘记在问题中告诉我们),但是在运行批处理文件时,您按Enter键而不是输入ID(例如1234)。
这是这两个错误的结果:
jstack
应该使用您提供的ID进行调用。
但是在您的情况下(根据问题中提供的代码),您没有任何变量地调用了它。你写了:
jstack > jstack.txt
因此,当您jstack
不使用任何变量运行时,它将输出以下内容:
Terminate batch file Y/N?
您的第二个错误是,当程序询问您:时,您按Enter而不是提供一个值 Enter ID:
。如果此时要输入一个ID,例如1234,则该%id%
变量将成为该值,在我们的例子中为1234。但是您没有提供值,而是按Enter键。如果您不给变量任何值,并且如果该变量之前未设置为其他任何值,则该变量%id%
将设置为set
命令提示符!因此,现在%id%
设置为Enter ID:
在调用jstack之前,按批处理文件中的请求在屏幕上回显的对象。
但是我怀疑您的DID jstack %id% > jstack.txt
在批处理文件代码中带有%id
(并从问题中错误地省略了它),并且您按回车时没有输入id。然后,批处理程序回显该ID(现在为“输入ID:”),然后运行jstack Enter ID: > jstack.txt
Jstack本身回显了输入,遇到一个错误并要求终止。
所有这些都被写入了jstack.txt文件。