nmap 输出:可变转义字符

nmap output: Variable escape character

我想用nmap输出一个XML文件,但是没有正确的路径。

这是1.txt:

192.168.1.0/24
192.168.5.0/24
...

这是我的代码:

@echo off
for /f "tokens=*" %%a in (1.txt) do (
  nmap -o -v %%a -oX %%a
)
pause

会显示错误

nmap Failed to open normal output for writing QUITTING

我知道是路径问题,因为找不到输出文件(192.168.1.0/24.xml)

输出%%a变量时如何转义192.168.1.0/24中的/?因为我想要像 192.168.1.0/24.xml.

这样的输出文件名

正斜杠是 reserved character that can't be used in a filename. Replace it with something valid (e.g. an underscore). Enable delayed expansion 使替换在 for 循环内工作。

@echo off
setlocal EnableDelayedExpansion

for /f "tokens=*" %%a in (1.txt) do (
  set "net=%%a"
  set "filename=!net:/=_!.xml"
  nmap -o -v !net! -oX "!filename!"
)

pause

这将为您提供类似于 192.168.1.0_24.xml 的输出文件名。文件名 192.168.1.0/24.xml 在 Windows.

上根本不可能