[CMD] set/p


(nolokon) #1

Witam.

Robię program, który będzie przeszukiwał folder w celu znalezienia pliku.

Używam tej komendy, aby nadać zmiennej nazwę

set/p "ZMIENNA=NAZWA_PLIKU"

if %ZMIENNA%==TEKST goto SKRYPT1

I tu się pojawia problem, jak zmodyfikować komendę, aby nie widziała różnicy między małymi i dużymi literami w nazwie pliku?

Pozdrawiam.


(kostek135) #2

Najprościej wykonać na obu zmiennych uppercase / downcase i wtedy je porównać. Dla batch to chyba nie jest wbudowane, znalazłem coś takiego: http://stackoverflow.com/questions/34713621/batch-converting-variable-to-uppercase chyba łatwiej będzie w PowerShell  “string”.ToUpper() z klasy String. Lepiej zacząć używać PowerShell ogólnie, XP już zdechł ,a od Visty w górę wszystkie Windows go mają.


(nolokon) #3

Żadna ścieżka nie zadziałała :confused:


(kostek135) #4

Mega feedback.
Zatem masz gdzieś błąd. Sam algorytm jest na pewno dobry w teorii. Jeśli masz nazwy plików:
 

i szukasz powiedzmy ABCD, to zrobienie toLowerCase() zarówno na wzorcu czyli ABCD -> abcd
oraz na podanych nazwach plików:

sprawi, że dopasowane zostaną dwa pierwsze.
Nie ma opcji by to nie działało.


(nolokon) #5

Nie rozumiem jednak jak zastosować ten algorytm.

Załóżmy, że tak wygląda program. Jak go zmodyfikować aby niezależnie czy wpiszę A czy a przenosiło mnie do skryptu a?

Mogę oczywiście dodać zmienną if %cho%==A goto a  , lecz co jeśli mam bardzo dużo haseł wyszukiwania i nie chcę  wpisywać każdej kombinacji?

@echo off

:start

cls

set/p "cho=Wpisz a lub d: "

if %cho%==a goto a

if %cho%==d goto d

goto start

:a

cls

echo a

pause

goto start

:d

cls

echo d

pause

goto start