从批处理文件中读取文本文件,然后将文本传递给另一个函数

时间:2011-11-10 10:33:24

标签: windows batch-file

希望有人可以提供帮助。我试过谷歌搜索这个网站,但我要么得到错误的关键字,否则我是第一个遇到这个问题的人(不太可能)。

我正在尝试从Windows批处理文件中的文本文件中读取域列表,我将在下面发布。对于我正在尝试将结果写入文件的每一个。我已经看过“for / f”的各种用法,但无法理解我需要做些什么来让线路工作。这是代码:

@setlocal
@echo off
for /F  "tokens=1" %%D in (c:\whois-for-win32\domainlist.txt) do call :reportit
endlocal
goto :eof

:reportit
setlocal
echo " Retrieving details for:  %%D"
echo " WHOIS:       %%D" >> c:\whois-for-win32\results\domainlisting.txt
echo "=============================================================" >> c:\whois-for-win32\results\domainlisting.txt
whois %%D >> c:\whois-for-win32\results\domainlisting.txt
timeout 8
endlocal

现在,假设所引用的数据文件每行只列出一个域。显然,我这样做的原因是我们需要检查相当多的域名。

感谢您的想法和想法!

1 个答案:

答案 0 :(得分:0)

如果使用FOR-Loops,则参数仅在for循环的上下文中可见 在您的函数中,它不能作为%% D访问。

但你可以通过调用参数传递它们,
在这种情况下,我使用“%%〜D”,因为%% ~D删除了封闭引号(如果有的话),然后我将其括在引号中以确保内容仅作为一个参数传递。

在函数中,传递的参数可以通过%1访问,但删除引号我使用%~1。

@echo off
setlocal
for /F  "tokens=* EOL=# delims=" %%D in (c:\whois-for-win32\domainlist.txt) do call :reportit "%%~D"
endlocal
goto :eof

:reportit
setlocal
set "domain=%~1"
echo " Retrieving details for:  %domain%"
echo " WHOIS:       %domain%" >> c:\whois-for-win32\results\domainlisting.txt
echo "=============================================================" >> c:\whois-for-win32\results\domainlisting.txt
whois %domain% >> c:\whois-for-win32\results\domainlisting.txt
timeout 8
endlocal
exit /b