Windows cmd 批处理文件将多个 netstat 输出写入文本文件
Windows cmd batch file write multiple netstat outputs to text file
我在一个文本文件中有一个由换行符分隔的主机名列表。我想在每一行上 运行 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
在此先感谢您的帮助:)
您需要 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
)
要从 cmd
set /?
和 setlocal /?
中获取有关 delayedexpansion
运行 的更多详细信息
也就是说,你也不需要 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
)
由于我没有看到实际的输入文件,如果您想要 netstat
命令的整个输出,也可以消除第二个 for
循环。
@echo off
(for /f "tokens=*" %%i in (fqdn.txt) do (
netstat %%i
echo delim
)
)>>test.txt
我在一个文本文件中有一个由换行符分隔的主机名列表。我想在每一行上 运行 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
在此先感谢您的帮助:)
您需要 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
)
要从 cmd
set /?
和 setlocal /?
delayedexpansion
运行 的更多详细信息
也就是说,你也不需要 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
)
由于我没有看到实际的输入文件,如果您想要 netstat
命令的整个输出,也可以消除第二个 for
循环。
@echo off
(for /f "tokens=*" %%i in (fqdn.txt) do (
netstat %%i
echo delim
)
)>>test.txt