İki olasılık vardır.
Sen koymayı unutmuş %id%içinde jstackçağrı.
jstack %id% > jstack.txt
Yani tüm doğru toplu iş dosyası şöyle olmalıdır:
@echo off
set /p id=Enter ID:
echo %id%
jstack %id% > jstack.txt
Ve / Veya 2. Kodu koydunuz (ve soruda bize söylemeyi unuttunuz), ancak toplu iş dosyasını çalıştırdığınızda, bir kimlik yazmak yerine Enter tuşuna basın (diyelim 1234).
Olan şey şu iki hatanın sonucudur:
jstacksağladığınız kimliğe sahip olması gerekir.
Ancak sizin durumunuzda (soruda verdiğiniz koda göre) herhangi bir değişken olmadan aradınız. Sen yazdın:
jstack > jstack.txt
Yani jstackdeğişken olmadan çalıştırdığınızda aşağıdakileri çıkarır:
Terminate batch file Y/N?
Sizin ikinci hata yerine programın sorduğumda bir değer verme girin preslenmiş olmasıdır: Enter ID:. Bu noktaya, örneğin 1234'e bir kimlik girseydiniz, %id%değişken bizim durumumuzda 1234 olan bu değer haline gelir. Değişkene herhangi bir değer vermezseniz ve bu değişken daha önce başka bir değere ayarlanmamışsa, değişken komut %id%istemine ayarlanır set!! Yani şimdi %id%ayarlandığında Enter ID:Eğer jstack denilen ÖNCE toplu dosyasında istendiği gibi ekranda yankılandı edildi.
Ancak jstack %id% > jstack.txt, toplu dosya kodunuzda %id(ve sorunun yanlışlıkla atlanmış) olduğunu ve bir kimlik yazmadan enter tuşuna bastığınızdan şüpheleniyorum . Daha sonra, toplu iş programı şimdi "Kimlik Girin:" olan kimliği tekrarladı ve ardındanjstack Enter ID: > jstack.txt
Jstack kendisi girişi tekrarladı, bir hatayla karşılaştı ve sonlandırılmasını istedi.
Ve tüm bunlar jstack.txt dosyasına yazılmıştır.