Kategorie szkoleń | Egzaminy | Kontakt
  • 2
  • 1
  • 56

Witam.

Chciałem ułatwić sobie życie pisząc skrypcik.

Założenia:

- Skrypt wywoływany co 10 sec.

- Wynik każdego wywołania zapisywany do oddzielnego pliku : c:jstack_data.txt.

Stworzyłem pętlę:

for /L %i in (1,1,254) do c:\xtm-files\PSTool\PsExec.exe -s "c:\Program Files\Java\jdk1.8.0_72\bin\jstack.exe" > jstack.txt

Dalej niestety nie wiem co zrobić.

Mógłby ktoś podpowiedzieć?

Pozdrawiam.

Tomasz
  • Zapytał
  • @ Tomasz | 21.07.2016
    • 9
    • 2
    • 23

Odpowiedzi (2)

  • 14

Jeśli wynik każdego wywołania ma trafiać do osobnego pliku, to pewnie tak:

W command line:
for /L %i in (1,1,254) do c:\xtm-files\PSTool\PsExec.exe -s "c:\Program Files\Java\jdk1.8.0_72\bin\jstack.exe" > jstack_%~i.txt

W skrypcie batch:
for /L %%i in (1,1,254) do c:\xtm-files\PSTool\PsExec.exe -s "c:\Program Files\Java\jdk1.8.0_72\bin\jstack.exe" > jstack_%%~i.txt

Czyli z użyciem modyfikatora %~, który rozwinie zmienną i za przekierowaniem wyjścia polecenia.

Pewnie chcesz uwzględnić timeout wewnątrz skryptu, więc całość może wyglądać np tak:

@echo off
for /l %%i in (1,1,254) do (
    timeout 10 > nul
    c:\xtm-files\PSTool\PsExec.exe -s "c:\Program Files\Java\jdk1.8.0_72\bin\jstack.exe" > jstack_%%~i.txt
)

Artur_Waszkiewicz
  • Odpowiedział
  • @ Artur_Waszkiewicz | 21.07.2016
    • 0
    • 2
    • 3
Komentarze
Genialne! Dziękuję.
Skomentował : @ Tomasz ,21.07.2016
  • 9
  • 2
  • 23
Ok.
Skomentował : @ TRENER MODERATOR ALTKOM AKADEMII ,23.07.2016
Fakt, niezły myk z tym %~i , ale tu trzeba PowerShella ;) zgodnie z duchem czasu.
Skomentował : @ Paweł_Stępień_7ckx ,30.07.2016
  • 5
  • 3
  • 21
  • 0

Minęła chwila od pomysłu z PowerShellem i mamy taki śliczny, krótki kod. Jak już pisałem zgodny z duchem czasu:

for ($i=1; $i -le 254; $i++) 
{
  c:\xtm-files\PSTool\PsExec.exe -s "c:\Program Files\Java\jdk1.8.0_72\bin\jstack.exe" | out-file c:\temp\jstack_$i.txt
}

Paweł_Stępień_7ckx
  • Odpowiedział
  • @ Paweł_Stępień_7ckx | 30.07.2016
    • laureat
    • 5
    • 3
    • 21