【发布时间】:2014-09-26 13:11:54
【问题描述】:
我想根据传入的命令行参数在 DOS 批处理文件中执行一些操作。
应使用任意数量的参数调用批处理。可能的参数应该是(最好是可扩展的):
UPDATE [-verbose [outputFileName]] [-validate] [/?]
此外,应该可以按任何顺序输入参数。
特别是参数 -verbose 很有趣:如果给定此参数,则以下 'parameterParam' 必须是输出文件名的名称或可以为空。请注意,参数有一个前导“-”。形参实参的形参没有前导“-”。
例如:
UPDATE -verbose -validate
应在 STDOUT (-verbose) 上显示执行步骤并验证输入。
UPDATE -verbose outputFileName.txt -validate
应将执行步骤记录到名为
UPDATE -validate
应仅验证输入。
UPDATE -validate -verbose
应该和
一样UPDATE -verbose -validate
.
UPDATE /?
将显示如何使用 update.bat
我该怎么做?使用 FOR 循环遍历命令行参数?但是怎么做?我可以遍历参数,但如果找到 -verbose,我如何预览以下参数以检查是否提供了文件名?
根据提供的参数,应执行特定操作(开始不同的批次...) 我想通过 java 调用 LiquiBase:
用于验证:
java -jar %LIQUIBASE_EXEC% --changeLogFile=../changesets/changelog-update.xml --logLevel=info validate
java -jar %LIQUIBASE_EXEC% --changeLogFile=../changesets/changelog-views-and-sp.xml --logLevel=info validate
对于离线 SQL 生成:
java -jar %LIQUIBASE_EXEC% --changeLogFile=../changesets/changelog-update.xml --logLevel=info updateSQL > update_%_outputfilename%
java -jar %LIQUIBASE_EXEC% --changeLogFile=../changesets/changelog-views-and-sp.xml --logLevel=info updateSQL > viewsAndSP_%_outputfilename%
【问题讨论】:
-
您真的使用 DOS 吗?还是
cmd.exe? -
我有一个名为 update.bat 的文件,我想让它在命令行工具中运行在 Windows 机器上。
-
那就是
cmd.exe,我去换标签。 -
这不是一个好的设计,因为文件名可以以
-开头。您应该添加一个带有所需文件名参数的附加-output选项:UPDATE [-verbose] [-validate] [-output outFile] -
看看stackoverflow.com/a/8162578/1012053。它可以满足您的大部分需求,除了您需要我之前评论中的
-output outFile选项,并且帮助选项将是-?而不是/?。
标签: loops batch-file parameters cmd