windows - Hvorfor kan jeg ikke nese en hvis eksisterer erklæring inde i denne kode i en batch/cmd fil

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skriver for øjeblikket et kort kommandolinjeværktøj til hurtigt at installere/afinstallere programmer og skal først identificere, at installationsfiler eksisterer for at give en meningsfuld fejlmeddelelse i tilfælde af at forholdene ikke er opfyldt.


Jeg har i øjeblikket nedenstående kode skrevet


@echo off
setlocal EnableExtensions

echo.
echo 1.Run Program1
echo 2.Summit else
echo 3.Summit else
echo 4.Summit else
echo 5.Summit else
echo.

set /p a= Enter Choice: 

if \%a\%==1(
if exist program1.cmd(
    rem program1 exists
    echo "Run program1.cmd"
    ) else(
    rem program1 does not exist
    echo "program1 does not exist"
    ))
pause


Jeg er for øjeblikket fortalt 'Syntaks af kommandoen er forkert.' uanset om Program.cmd eksisterer eller ej, men jeg forstår ikke hvorfor.


Er nesting, hvis kommandoer ikke er mulige i batch/cmd-filer eller forstår jeg grundlæggende noget i syntaxen af ​​Windows-kommandolinjen.

Bedste reference


Det er muligt at genoprette if/for kommandoer, men cmd er meget meget meget betyder om plads - et mindre eller mere plads kan nemt ødelægge scriptet.


Her er den faste kode.


if "\%a\%"=="1" (
    if exist program1.cmd (
        rem program1 exists
        echo "Run program1.cmd"
          ) else (
        rem program1 does not exist
        echo "program1 does not exist"
    )
)


Gennemgå forskellene mellem min og din if sætnings syntaks. Også if \%a\%==1 kan være (og skal ikke være obligatorisk) ændret til if "\%a\%"=="1" for en mere sikker sammenligning.


Hvorfor skal vi ændre for at bruge citater (")? Overvej at du tilfældigt indtastede et mellemrum. CMD vil se dette:


if  ==1 (


som det ikke forstår.