Пакетная (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