首页 > 解决方案 > 如何在批处理文件的 for 循环之外使用变量?

问题描述

我有一个包含远程服务器列表的列表“A.txt”。

我需要在所有这些中做一个净时间,然后用远程服务器名称回显结果。示例:“服务器 10/10/2018 19:00”

这是我的代码:

FOR /f %%G IN (D:\A.txt) DO (
    net time \\%%G
)>> B.txt 

FOR  /f "tokens=5,7,8" %%H IN (D:\B.txt) DO (echo %%H %%I %%J >> nettime.csv)

The result of this is : 

"\\Server1 10/10/2018 10:40:09 

 com   

 \\Server2 10/10/2018 10:40:09 

 com

它读取“命令成功”行的标记(我在操作系统上有葡萄牙语)

有没有办法将 %%G 放入回声中?或者我可以隐藏“命令成功”吗?

谢谢

标签: batch-file

解决方案


只需将命令的输出通过管道NET传输到FIND命令以搜索字符串Current或您的语言中的任何内容。您可以使用命令捕获所有这些FOR /F

@ECHO off
FOR /f "delims=" %%G IN (D:\A.txt) DO (
    FOR  /f "tokens=5,7,8" %%H IN ('net time \\%%G ^| find "Current"') DO echo %%H %%I %%J
)>> nettime.csv

推荐阅读