我需要在运行时将ID和密码传递给批处理文件,而不是将它们硬编码到文件中.
这是命令行的样子:
test.cmd admin P@55w0rd > test-log.txt
Run Code Online (Sandbox Code Playgroud) 我需要能够通过NAME(而不是按顺序)将参数传递给Windows批处理文件.我的目的是为最终用户提供以任何顺序传递参数的灵活性,批处理文件仍然可以处理它们.
一个让我的问题更清晰的例子:
在命令行中,用户执行以下操作:
somebatchfile.bat originalFile.txt newFile.txt
在里面somebatchfile.bat有一个简单的语句将原始文件(第一个参数%1%)的内容复制到新文件(第二个参数%2%).它可以像下面的声明一样简单:
copy %1% %2%
现在,如果用户以相反的顺序传递上述参数,结果将远非理想(实际上非常错误).
那么,有没有办法让用户按名称传递参数:例如somebatchfile.bat "SOURC=originalFile.txt" "TARGET=newFile.txt",脚本识别它们并在正确的位置使用'例如copy %SOURCE% %TARGET%?
谢谢,
当我尝试SHIFT在IF块内部使用时,我看到了一些意想不到的结果.使用这个:
@echo off
if "%1"=="/p" (
echo %1
shift
echo "shifted"
echo %1
)
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
C:\>ex.bat /p HAI
/p
"shifted"
/p
Run Code Online (Sandbox Code Playgroud)
但是,当我使用此代码时:
@echo off
echo %1
shift
echo "shifted"
echo %1
Run Code Online (Sandbox Code Playgroud)
我明白了:
C:\>ex.bat /p HAI
/p
"shifted"
HAI
Run Code Online (Sandbox Code Playgroud)
我需要第二个输出,但是在逻辑块中我可以循环它.我试图在这里实现类似Jon的答案:在DOS命令行中使用批处理文件中的参数,但是我遇到了一些麻烦.为什么会这样?
有什么方法可以根据外部属性文件的内容填充 Liquibase 变更日志文件中的参数吗?
就像,我想说:
<createTable tableName="${table.name}">
<column name="id" type="int"/>
<column name="${column1.name}" type="varchar(${column1.length})"/>
<column name="${column2.name}" type="int"/>
</createTable>
Run Code Online (Sandbox Code Playgroud)
table.name并将和其他参数的值保留在外部文件中db.properties,并从变更日志中、从 Liquibase 命令行或作为运行 liquibase 的 Maven 插件的选项来引用该文件。
我似乎找不到任何方法来做到这一点,有可能吗?