在windows批处理文件中设置和测试变量

在windows批处理文件中设置和测试变量,windows,variables,conditional,batch-file,Windows,Variables,Conditional,Batch File,在Windows 7上创建批处理实用程序脚本以调用可执行文件。它基本上是有效的,除了我的第二个IF语句。尝试了许多不同的事情 我的目的是为每个命令行参数调用“DoSomething”。那部分有用! 第二个IF语句仅在命令行上没有给定参数时才打印帮助消息。嗯,这就是目的。它不是这样做的 @ECHO OFF :Start SET a_file_was_processed="false" IF "%1" NEQ "" ( SET a_file_was_processed="true" ECH

在Windows 7上创建批处理实用程序脚本以调用可执行文件。它基本上是有效的,除了我的第二个IF语句。尝试了许多不同的事情

我的目的是为每个命令行参数调用“DoSomething”。那部分有用! 第二个IF语句仅在命令行上没有给定参数时才打印帮助消息。嗯,这就是目的。它不是这样做的

@ECHO OFF

:Start
SET a_file_was_processed="false"
IF "%1" NEQ "" (
  SET a_file_was_processed="true"
  ECHO Extracting table %1 from database.
  DoSomething word%1 > output_%1.txt
  ECHO Finished extract table to file output_%1.txt
SHIFT
GOTO Start
)

if a_file_was_processed NEQ "true" (
  ECHO Invoke this script as: Extract_From_sdf  table_name1   table_name2
)

想法?

尝试了这些变化,似乎如预期的那样奏效

@ECHO OFF

SET a_file_was_processed="false"
:Start
IF "%1" NEQ "" (
  SET a_file_was_processed="true"
  ECHO Extracting table %1 from database.
  rem --- DoSomething word%1 > output_%1.txt
  ECHO Finished extract table to file output_%1.txt
SHIFT
GOTO Start
)

if %a_file_was_processed% NEQ "true" (
  ECHO Invoke this script as: Extract_From_sdf  table_name1   table_name2
)
第一个明显的错误是标签:在设置为false之前启动。 然后,要引用变量的值,需要将变量用%括起来