ตัวแปรที่ตั้งค่าแบทช์ (Windows) เป็นอาร์กิวเมนต์แรกไม่ทำงาน

ฉันมีแบตช์สคริปต์ mybatch ซึ่งฉันพยายามจัดเก็บอาร์กิวเมนต์ผู้ใช้ตัวแรกในตัวแปรที่เรียกว่า FILE

set FILE = %1 
if defined FILE (
  echo defined
  echo do something with %1
  ) else (
   echo not defined %1 
  )

หากฉันรันแบตช์ผ่าน mybatch test1 ฉันจะไม่ได้กำหนด test1 ไว้เสมอ เหตุใดตัวแปร FILE จึงไม่ถูกกำหนดไว้


person knowledge    schedule 25.04.2016    source แหล่งที่มา


คำตอบ (2)


คุณมีการเว้นวรรคที่ไม่ต้องการในการกำหนดตัวแปร ดังนั้นคุณจึงกำหนดตัวแปรด้วยการเว้นวรรคในชื่อซึ่งจะมีค่าที่ขึ้นต้นด้วยช่องว่างเสมอ คำสั่ง IF ของคุณกำลังตรวจสอบว่ามีตัวแปรที่ไม่มีช่องว่างอยู่หรือไม่

ดูการประกาศและการใช้ตัวแปรในไฟล์แบตช์ Windows (.BAT)

ฉันขอแนะนำบรรทัดแรกของคุณควรเป็น:

set "FILE=%~1"
person dbenham    schedule 25.04.2016

คุณสามารถลองสิ่งนี้:

@echo off
set "FILE=%~1" 
if Exist "%FILE%" (
    echo.
    echo "%FILE%" Exist
    echo do something with "%FILE%"
  ) else (
   echo "%FILE%" is not defined 
)
Pause
person Hackoo    schedule 25.04.2016