• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

plik Batch - odczyt z pliku

Object Storage Arubacloud
0 głosów
618 wizyt
pytanie zadane 10 października 2018 w Inne języki przez penera Gaduła (4,040 p.)
edycja 10 października 2018 przez penera

2 dni temu napisałem skrypt do zabijania procesu excela, bo mamy spory projekt w VBA  i zdarza się, że Excel umrze pozostawiając proces w menadżerze zadań. Plik ma za zadanie zabijać ten proces, ale musi to być świadoma decyzja i użytkownicy są w wielu krajach więc dlatego tyle if'ów - systemy w firmie to win 7 i 10.

KOD:

for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" == "6.1"  set win=Win7
if "%version%" == "10.0" set win=Win10


if %win% == Win10 (
systeminfo | findstr /B /C:"System Locale" >C:\temp\locallang.txt
set /p lang=<C:\temp\locallang.txt

if "%lang%" == "System Locale:             pl;Polski" (
set q= [93m Czy chcesz zabic wszystkie procesy Excel'a? Napisz [85;34m TAK  [93m lub zamknij okno. [0m
set w= [101;93m UWAGA! [101;93m W przypadku otwartych innych arkuszy Excel - mozesz utracic niezapisane dane! [0m
set a= Odpowiedz:
set o=TAK
set positive= ZRIOBIONE!
set negative= ANULOWANE!
)

if not "%lang%" == "System Locale:             pl;Polski" (
set q= [93m Do you want to kill all of Excel processes? Type [85;34m YES  [93m or close this window. [0m
set w= [101;93m WARRNIG! [101;93m If another workbook of Excel is open - You may lose an unsaved data! [0m
set a= Answer:
set o=YES
set positive= DONE! 
set negative= CANCELLED! 
)

echo [93m                                                                   [0m
echo %q%
echo [93m                                                                   [0m
echo %w%
set /p odp= "%a%"


if "%odp%" == "YES" (taskkill /im excel.exe /f && echo %positive% )
if not "%odp%" == "YES" (echo %negative%)
pause
)


if %win% == Win7 (
echo Czy chcesz zabic wszystkie procesy Excel'a? Napisz  YES   lub zamknij okno.
echo Do you want to kill all of Excel processes? Type    YES   or close this window.
echo UWAGA!    WARRNING!
echo W przypadku otwartych innych arkuszy Excel - mozesz utracic niezapisane dane!
echo If another workbook of Excel is open - You may lose an unsaved data!

)
if %win% == Win7 (set /p odp= "ODP:")

if %win% == Win7 (
if not  "%odp%" EQU "YES" (echo "CANCELLED! Anulowane! %odp%" )
if  "%odp%" EQU "YES" (taskkill /im excel.exe /f && echo "DONE! Zrobione! " )
pause
)

 

Przy włączonym echo wynik skryptu to:
 

C:\Users\ml46005\Desktop>for /F "tokens=4-5 delims=. " %i in ('ver') do set VERSION=%i.%j

C:\Users\ml46005\Desktop>set VERSION=10.0

C:\Users\ml46005\Desktop>if "10.0" == "6.1" set win=Win7

C:\Users\ml46005\Desktop>if "10.0" == "10.0" set win=Win10

C:\Users\ml46005\Desktop>if Win10 == Win10 (
systeminfo   | findstr /B /C:"System Locale"  1>C:\temp\locallang.txt
 set /p lang= 0<C:\temp\locallang.txt
 if "" == "System Locale:             pl;Polski" (
set q=  Czy chcesz zabic wszystkie procesy Excel'a? Napisz  TAK   lub zamknij okno.
 set w=  UWAGA!  W przypadku otwartych innych arkuszy Excel - mozesz utracic niezapisane dane!
 set a= Odpowiedz:
 set o=TAK
 set positive= ZRIOBIONE!
 set negative= ANULOWANE!
)
 if not "" == "System Locale:             pl;Polski" (
set q=  Do you want to kill all of Excel processes? Type  YES   or close this window.
 set w=  WARRNIG!  If another workbook of Excel is open - You may lose an unsaved data!
 set a= Answer:
 set o=YES
 set positive= DONE!
 set negative= CANCELLED!
)
 echo
 echo
 echo
 echo
 set /p odp= ""
 if "" == "YES" (taskkill /im excel.exe /f   && echo   )
 if not "" == "YES" (echo  )
 pause
)

ECHO is on.

ECHO is on.

Widać tam, że lang nie dostaje wartości - przypisanie jednak jest poprawne. To też pewnie nie kwestia uprawnień skoro plik tworzony i zapis do niego jest poprawny. Ma ktoś jakiś pomysł, dlaczego nie zaczytywany jest plik?

W pliku jest jednak linijka: 
 

System Locale:             pl;Polski

Wiem, że większość if'ów jest dziwna i się powtarzają, ale inaczej po prostu skrypt nie działał z nieznanych mi powodów.

1 odpowiedź

0 głosów
odpowiedź 10 października 2018 przez penera Gaduła (4,040 p.)
Ok problemem są zagnieżdżone ify

Podobne pytania

0 głosów
1 odpowiedź 257 wizyt
pytanie zadane 20 listopada 2018 w Inne języki przez Ditrix Mądrala (5,650 p.)
0 głosów
1 odpowiedź 1,115 wizyt
pytanie zadane 18 lutego 2017 w Inne języki przez Megatroon Nowicjusz (200 p.)
0 głosów
1 odpowiedź 136 wizyt
pytanie zadane 22 grudnia 2017 w Inne języki przez jveaster Początkujący (440 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...