Программа ищет файлы, содержащие определенные ключевые слова, и частью ее задачи является отображение искомых ключевых слов. Ключевые слова пишутся одно под другим в текстовом файле, из которого они читают. Тем не менее, он читает только с последней строки? Вероятно, очень простая ошибка, но я скучаю по ней ...
@echo off
:main_section
set main_dir=%cd%
set key1=variable
set key2=variable
set key3=variable
set key4=variable
set key5=variable
for /f "delims=" %%a in (keylist.txt) do set "key1=%%a"
for /f "skip=1 delims=" %%b in (keylist.txt) do set "key2=%%b"
for /f "skip=2 delims=" %%c in (keylist.txt) do set "key3=%%c"
for /f "skip=3 delims=" %%d in (keylist.txt) do set "key4=%%d"
for /f "skip=4 delims=" %%e in (keylist.txt) do set "key5=%%e"
echo warning: do not launch from the userprofile directory
echo warning: write exactly five keywords in keylist.txt
echo searching for %key1%, %key2%, %key3%, %key4%, %key5%
pushd collection
>>%key1%.txt findstr /i /p /s %key1% %userprofile%\*.* >nul
echo search for %key1% complete - printed to collection\%key1%.txt
>>%key2%.txt findstr /i /p /s %key2% %userprofile%\*.* >nul
echo search for %key2% complete - printed to collection\%key2%.txt
>>%key3%.txt findstr /i /p /s %key3% %userprofile%\*.* >nul
echo search for %key3% complete - printed to collection\%key3%.txt
>>%key4%.txt findstr /i /p /s %key4% %userprofile%\*.* >nul
echo search for %key4% complete - printed to collection\%key4%.txt
>>%key5%.txt findstr /i /p /s %key5% %userprofile%\*.* >nul
echo search for %key5% complete - printed to collection\%key5%.txt
pushd %main_dir%
for /f "tokens=3" %%f in ('dir "collection"^|find "File(s)"') do set size=%%f
set "size=%size:,=%"
echo %size% bytes of information collected
echo press any key to exit the program
pause >nul
rem
)@echo off
и запустите ваш командный файл. Вы увидите свою ошибку. Подсказка: первыйfor
цикл обрабатывает все строки вkeylist.txt
. Следующийfor
цикл обрабатывает последние четыре строки ...Ответы:
Вероятно, очень простая ошибка, но я скучаю по ней ...
Ваши
for
циклы обрабатывают все строки в файле, поэтому сохраняется только последнее значение в файле.Вы можете упростить ваш пакетный файл и использовать один
for
цикл вместе с отложенным расширением и счетчиком.Вот небольшой пакетный файл, который дает вам основное решение. Объедините это с вашим командным файлом.
test.cmd:
Пример вывода:
Дальнейшее чтение
источник