[英]How to make two batch file variables echo into a single line?
我正在尝试为我的ESXi服务器创建备份脚本,但我遇到了问题。
我需要循环这2个命令,然后将它们写到一个名为backup.list的文本文件中。 它将包含我需要备份的所有VM ID和VM名称。
当我在服务器上运行两个循环命令时,它们仅返回最后一个值,我知道我缺少了一些东西,但是即使批处理也不是很明智。
这是代码:
@ECHO OFF
SET PLINK=C:\Plink.exe
SET ESXHOST=esx01.example.com
SET USERNAME=root
SET PASSWORD=password
SET DATASTORE=/vmfs/volumes/datastore3
IF EXIST Backup.list DEL Backup.list
TYPE NUL>Backup.list
SETLOCAL EnableDelayedExpansion
FOR /F "SKIP=1 TOKENS=1" %%A IN ('%PLINK% %USERNAME%@%ESXHOST% -pw %PASSWORD% vim-cmd vmsvc/getallvms') DO SET ID=%%A
FOR /F "SKIP=1 TOKENS=2" %%B IN ('%PLINK% %USERNAME%@%ESXHOST% -pw %PASSWORD% vim-cmd vmsvc/getallvms') DO SET VM=%%B
ECHO !ID!:!VM!
PAUSE
您需要一个循环
FOR /F "SKIP=1 TOKENS=1,2" %%A IN ('%PLINK% %USERNAME%@%ESXHOST% -pw %PASSWORD% vim-cmd vmsvc/getallvms') DO (
SET ID=%%A
SET VM=%%B
ECHO !ID!:!VM!
)
FOR命令仅在DO之后循环遍历单个语句-您需要使用括号将其告知它是复合语句。 另外,将第一个令牌填充到%% A之后,会自动发生对%% B的分配
您可能还应该省略SETLOCAL EnableDelayedExpansion并直接执行
FOR /F "SKIP=1 TOKENS=1,2" %%A IN ('%PLINK% %USERNAME%@%ESXHOST% -pw %PASSWORD% vim-cmd vmsvc/getallvms') DO ECHO %%A:%%B
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.