windows - Hvorfor er godkendte værdier i en batch\% variabel\% ikke korrekt anvendt?

Indlæg af Hanne Mølgaard Plasc

Problem



[[Originaltitel: Hvorfor bliver små bogstaver i en batch\% variabel\% returneret som store bogstaver?]]


Betingelse



Jeg har en batchfil, hvor værdien er erklæret for en variabel som sådan:


SET myVar="something.lowercase"


Men senere i scriptet, når du refererer til denne variabel som sådan:


\%myVar\%


værdien kommer ind som SOMETHING.LOWERCASE som forårsager, at den pågældende kommando ikke fungerer korrekt. ( se beslutning: problemet var en falsk " i kommandoen, og store bogstaver var den måde, som 'fejl' blev rapporteret )


Concern



Hvorfor og under hvilken situation sker dette? moot da værdien ikke ændres, men snarere den måde, fejlen rapporteres, og fejlen skyldtes en " introduceres i den godkendte værdi ( se beslutning )


Kontekst



For sammenhæng, i tilfælde af at det betyder , kaldes det på denne måde: ( det viste sig at være vigtigt, da den indførte " forårsagede kontrollen at mislykkes, og forvirringen var kommer fra 'kan ikke finde ...' er store )


TASKLIST /FI "IMAGENAME eq \%myVar\%" 2>NUL | FIND /I /N "\%myVar\%">NUL


Jeg formoder, at dette på en eller anden måde sker i forbindelse med denne kommando, men kan ikke være sikker og ved ikke hvorfor. Hvis det er tilfældigt, hvordan kan jeg afbøde det? ( se beslutning )


Tak på forhånd.





Opløsning



Takket være @Campo s forslag, løste problemet ved at droppe " problemet og scriptet fungerer nu. Tak.

Bedste reference


Dit problem skyldes, at du unødigt inkluderer doublequotes i din variable værdi.


Fordi du har inkluderet double quotes søger TaskList filteret efter:


"IMAGENAME eq "something.lowercase""


... og din Find kommando forsøger at matche:


""something.lowercase""


Løsningen er at bruge den korrekte syntaks for at indstille en variabel:


Set "myVar=something.lowercase"