batch-fil - Brug af Windows-udefineret miljøvariabel?

Indlæg af Hanne Mølgaard Plasc

Problem



Her er et simpelt men uoverskueligt spørgsmål.


For en udefineret Windows-miljøvariabel, f.eks


I vinduet Kommandoprompt resulterer ECHO [[\% abc\%]] i [[\% abc\%]]


Men i en .CMD-batchfil resulterer ECHO [[\% abc\%]] i [[]]


Hvorfor forskellen? Jeg har undersøgt ECHO-kommandoen og kan ikke finde noget herom. Jeg er bekymret for hvor ellers denne subtile forskel kan gælde.

Bedste reference


Virkelig godt spørgsmål! Forvirrende huh?


Der er faktisk to forskellige parsere brugt til at analysere batch scripts og kommandolinjekommandoer.


Citat fra dette fremragende svar:



  BatchLineParser - Parseren inde i batch-filer, for linjer eller blokke

  
  CmdLineParser - Ligesom BatchLineParser, men direkte ved kommandoprompten, fungerer forskellige



Nøgleforskellen er i den første fase af parsing, især forlængelsen af ​​\%var\%:


I BatchLineParser hvis var ikke eksisterer, vil det blive erstattet med ingenting, i CmdLineParser hvis var ikke er defineret, vil udtrykket blive uændret.


Så hvorfor designede nogen det på denne måde? Jeg har absolut ingen ide.