将参数从一个批处理文件传递到另一个不起作用

时间:2018-07-30 16:44:35

标签: linux batch-file putty winscp sshpass

我想登录Linux环境,例如ENV1,并从ENV1运行命令,以将文件从ENV1自动复制到ENV2。

当我使用以下命令时,一切正常。

我正在运行“ BATCH_FILE.bat”,该文件从“ COMMANDS_TO_RUN_IN_LINUX.bat”文件中读取命令,将文件从ENV1复制到ENV2。

BATCH_FILE.bat文件内容如下:

"C:\putty.exe" -ssh myuser_ENV_ONE@ENV1_ipaddress -pw "mypassword_ENV_ONE" -m "C:\COMMANDS_TO_RUN_IN_LINUX.bat"

COMMANDS_TO_RUN_IN_LINUX.bat内容如下:

sshpass -p "mypassword_ENV_TWO" scp /u01/file.txt myuser_ENV_TWO@ENV2_ipaddress:/u01/file.txt

现在出现了问题,我希望用户同时传递环境ipaddress(ENV1和ENV2)而不是硬编码,为此我修改了如下命令:

修改的BATCH_FILE.bat文件内容如下:

"C:\putty.exe" -ssh myuser_ENV_ONE@%1 -pw "mypassword_ENV_ONE" -m "C:\COMMANDS_TO_RUN_IN_LINUX.bat"

COMMANDS_TO_RUN_IN_LINUX.bat内容如下:

sshpass -p "mypassword_ENV_TWO" scp /u01/file.txt myuser_ENV_TWO@%2:/u01/file.txt

我正在从命令行运行BATCH_FILE.bat时传递ENV1详细信息,并且它工作正常,并已登录ENV1。

但是我现在不知道是否也要通过ENV2,这又将取代%2。

我尝试使用%1代替,只是为了检查参数%1是否已从BATCH_FILE.bat传递到COMMANDS_TO_RUN_IN_LINUX.bat,然后依次将文件从ENV1复制回ENV1。

但这也给了我一个错误“未知主机%1”。它没有作为参数传递。

我浏览了一些帖子,但没有一个解决我的问题。

0 个答案:

没有答案