nmap输出:变量转义字符

时间:2016-01-08 15:15:13

标签: windows batch-file nmap

我想使用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无法打开正常输出以写入QUITTING

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

当我输出/变量时,如何逃避192.168.1.0/24中的%%a?因为我想要输出文件名,如192.168.1.0/24.xml

1 个答案:

答案 0 :(得分:1)

正斜杠是reserved character,不能在文件名中使用。 Replace它有效(例如下划线)。启用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之类的输出文件名。 Windows上无法使用文件名192.168.1.0/24.xml