Windows cmd批处理文件将多个netstat输出写入文本文件[重复]

问题描述 投票:0回答:1

此问题已经在这里有了答案:

我有一个主机名列表,在文本文件中用新行分隔。我想在每行上运行netstat并将所有这些命令的输出写入文本文件。我知道netstat命令将在每一行上工作,所以那不是问题。

这里是我到目前为止在.bat中的内容:

FOR /F "tokens=*" %%A in (fqdn.txt) do (
    FOR /F "tokens=* USEBACKQ" %%F IN (`netstat %%A`) DO (
        SET var=%%F
    )

    echo %var% >> test.txt
    echo delim >> test.txt
)

发生的全部是netstat帮助反复发布到命令行,文本文件填充为:

ECHO is on.
delim 
ECHO is on.
delim 
ECHO is on.
delim 

感谢您的帮助:)

windows batch-file cmd netstat
1个回答
0
投票

您需要delayedexpansion,因为您正在代码块内设置和使用变量:

@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%A in (fqdn.txt) do (
for /f "tokens=* USEBACKQ" %%F IN (`netstat %%A`) DO (
    SET var=%%F
  )
   echo !var! >> test.txt
   echo delim >> test.txt
)

要获取有关delayedexpansion的更多详细信息,请从cmd set /?setlocal /?运行

话虽如此,您也不需要delayedexpansion

@echo off
for /f "tokens=*" %%A in (fqdn.txt) do (
for /f "tokens=* USEBACKQ" %%F IN (`netstat %%A`) DO (
    echo %%F >> test.txt
  )
   echo delim >> test.txt
)

由于我没有看到实际的输入文件,如果您想从for命令获得整个输出,也可以消除第二个netstat循环。

@echo off
(for /f "tokens=*" %%i in (fqdn.txt) do (
    netstat %%i
    echo delim
 )
)>>test.txt
© www.soinside.com 2019 - 2024. All rights reserved.