【发布时间】:2018-09-04 19:35:56
【问题描述】:
我在一个名为 mData.txt 的文本文件中有一些数据,数据如下所示:
Master1:H1M1,H2M1
Master2:H1M2,H7M2
VMVPC092015:H1,H2,H3
DEKSTOP-UKUEA78:机器 1,机器 2
Master4:H1M4,H2M4
这是我的批处理文件中的一些示例代码:
@echo off
setLocal enableDelayedExpansion
:: Set hostname
hostname.exe > __hName.tmp
set /p hNameVar=<__hName.tmp
del __hName.tmp
echo %hNameVar%
for /f "usebackq" %%i IN (`hostname`) do set hNameVar2=%%i
echo %hNameVar2%
for /f "tokens=1,2 delims=:" %%a in (mData.txt) do (
set mName=%%a
set hName=%%b
if !mName!==%hNameVar2% (
echo FoundIt
pause
)else (
echo here: !mName!
echo there: !hNameVar2!
)
)
我的桌面名称是:DESKTOP-UKUEA78
我希望这个脚本从文本文件的每一行中读取第一台机器名称,并确定该机器名称是否与我的桌面名称相同。
执行不断进入 else 子句。我也附上了截图。 hNameVar 和 hNameVar2 都产生相同的 o/p.ScreenShot 这是我的第一个批处理项目,我不太清楚我哪里出错了。有人能帮帮我吗...
【问题讨论】:
-
通常
)和else之间没有空格会导致语法错误。 -
我想我比较这些值的方式有问题...添加空格没有帮助
-
可能是某个主机名命令中某处的隐藏空间。尝试使用
echo *%hNameVar%*和echo *%hNameVar2%*看看是否有明显不同。 -
你的整个脚本没有降神,所以你想找到并列出这个例子:
Machine1,Machine2在主机名旁边?在你的情况下DESKTOP-UKUEA78..? -
将获取与主机名相对应的机器名称并将其传递给另一个脚本,该脚本应该启动所有虚拟机,在它们上运行特定进程等等......这只是一个特定场景的示例测试用例,我被困在..
标签: windows batch-file command-line rdp