Зацикливание текстового файла с использованием командных файлов - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу перебрать плоский файл (текстовый файл), который имеет 3000 строк.Я хочу иметь возможность напечатать 30 строк, затем распечатать заметку, затем распечатать следующие 30 строк и снова заметку.

Я пробовал нижеприведенное, но это не работает.

For /L %%file in (1,30,3000) do echo %%file

Ожидаемый результат:

Имя Описание описания

Ххххх хххххххх Ххххххх *

Ххххх ххххххххх ХХХХХХХХХ

Некоторые примечания к добавлению

Название, описание, описание

Xxxxx xxxxxxxxx Xxxxxxx

Xxxxx xxxxxxxxx Xxxxxxx

1 Ответ

0 голосов
/ 01 апреля 2019

Ваш цикл for полностью недействителен. Метавариабельные переменные требуют одного символа, а не слова. что-то вроде %%i, но независимо от этого, цикл /L будет просто делать то, сколько раз вы говорите это, что не будет делать то, что вы думаете здесь .. Попробуйте это:

Примечание Пожалуйста, убедитесь, что вы изменили D:\work dir\somefile.txt в 3-й строке кода на свое имя файла, если оно находится в том же каталоге, иначе добавьте полный путь к нему, если нет.

@echo off
setlocal enabledelayedexpansion
set "file=somefile.txt"
set /a cnt=0

for /f "delims=" %%i in (%file%) do (
 set /a "eval=(cnt+1)%%30"
 if not !eval! equ 0 echo %%i
 if !eval! equ 0 (
    echo %%i
    Echo Add YOUR note here!!!
)
 set /a cnt+=1
)

Если вам требуется, чтобы примечание вставлялось пользователем вручную, используйте set /p, как показано ниже:

@echo off
setlocal enabledelayedexpansion
set "file=somefile.txt"
set /a cnt=0

for /f "delims=" %%i in (%file%) do (
 set /a "eval=(cnt+1)%%30"
 if not !eval! equ 0 echo %%i
 if !eval! equ 0 (
    echo %%i
    set /p note=Add note?
    echo !note!
)
 set /a cnt+=1
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...