Чтение текстового файла из пакетного файла, а затем передача текста в другую функцию - PullRequest
1 голос
/ 10 ноября 2011

Надеюсь, кто-нибудь может помочь.Я пытался погуглить этот сайт, но я либо получаю неправильные ключевые слова, либо я первый, кто столкнулся с этой проблемой (маловероятно).

Я пытаюсь прочитать список доменовиз текстового файла в пакетном файле 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 голосов
/ 10 ноября 2011

Если вы используете 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...