批量(Windows)将变量设置为第一个参数不起作用

kno*_*dge 1 variables cmd batch-file

我有一个batchscript mybatch,我尝试将第一个用户参数存储在一个名为FILE的变量中

set FILE = %1 
if defined FILE (
  echo defined
  echo do something with %1
  ) else (
   echo not defined %1 
  )
Run Code Online (Sandbox Code Playgroud)

如果我通过mybatch test1执行我的批处理,我总是没有定义test1.为什么没有定义变量FILE?

dbe*_*ham 5

在变量赋值中有不需要的空格,因此您定义了一个变量,其名称中的空格始终具有以空格开头的值.您的IF语句正在检查是否存在没有空格的变量.

请参阅在Windows批处理文件(.BAT)中声明和使用变量

我建议你的第一行应该是:

set "FILE=%~1"
Run Code Online (Sandbox Code Playgroud)