我想使用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
。
答案 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
。