2011-11-10 59 views
1

希望有人可以提供幫助。我試圖通過使用谷歌搜索這個網站,但我要麼得到錯誤的關鍵字,否則我是第一個遇到這個問題(不太可能)的人。從批處理文件中讀取文本文件,然後將文本傳遞給另一個功能

我想從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 

現在,假設數據文件提到只有一個域,每行上市。顯然,我這樣做的原因是我們有相當多的域來檢查。

你的想法和想法都非常感謝!

回答

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 
+0

不知道這是否與Windows 7的事實有關,但即使這不適合我,jeb。感謝您澄清有關將%% D傳遞給子例程的問題,因爲它已經放棄了我關於該問題的想法。
我試着在(c:\ whois-for-win32 \ domainlist.txt)中做「for/f」tokens = 1「%% D do echo %% D」,結果什麼都沒有,所以我覺得有一些東西文件錯誤。然後我嘗試了「more domainlist.txt」,並且每行都得到了一個域,不受限制(是相關的?),所以現在似乎問題出現在for循環中。還有什麼想法? – MarcusWebb1966

+0

是的,如果你的行以EOL字符開頭,'''比他們將被忽略,嘗試使用''tokens = *'eol =#delims =「' – jeb

+0

試過,並非任何文本文件包含單個EOL要麼 ;字符(或任何特殊字符 - 不包括CR/LF)。仍然沒有從外觀中讀取文件... – MarcusWebb1966

相關問題