Поскольку я здесь новичок, у меня есть проблемы с "кодированием" в пакетном файле.
У меня есть файл ввода-вывода file.txt
с некоторыми данными (Имя Фамилия Пол Возраст), а также некоторые функции это должно быть сделано с этим файлом, например:
- добавить человека,
- удалить человека,
- отсортировать людей,
- выйти,
- показать список
Основная проблема возникает, когда я выбираю функцию для удаления человека. Я пытался перезаписать файл с помощью type %~f1 | findstr /v %name% > %~f1
, но он удаляет все из файла ввода-вывода. Я также пробовал type %~f1 | findstr /v %name% >> %~f1
, но он добавляет несколько строк, которые мне не нужны ...
Мне нужна функция, которая удаляла бы всю строку, содержащую введенное имя (или фамилию), и показывала бы мне выходной файл без этой строки.
@echo off
:PAT
cls
color 4f
echo.
if exist %~f1 (
rem goto PRA
) else (
echo ERROR
goto END
)
:PRA
echo Menu:
echo 1) Add a person
echo 2) Delete a person
echo 3) Sort
echo 4) Exit
echo 5) Show the list
echo.
choice /c 12345 /m "Choice: "
if errorlevel 5 goto AAA
if errorlevel 4 goto END
if errorlevel 3 goto SOR
if errorlevel 2 goto DEL
if errorlevel 1 goto ADD
:EOF
pause
:END
choice /m "Continue?"
if errorlevel 2 goto NE
if errorlevel 1 goto TAI
:TAI
cls
goto PAT
:NE
Exit
:SOR
echo Which sort?
echo 1: A-Z
echo 2: Z-A
choice /c 12 /m "Choice: "
if errorlevel 2 goto ZTA
if errorlevel 1 goto ATZ
:ATZ
type %~f1 | sort /+1 /o %~f1
cls
goto PRA
:ZTA
type %~f1 | sort /+1 /r /o %~f1
cls
goto PRA
:DEL
echo Enter the name:
set /p name=
type %~f1 | findstr /v /i %name% > %~f1
goto PRA
:ADD
set /p name=Enter the name:
set /p surname=Enter the surname:
set /p sex=Enter the sex:
set /p age=Enter the age:
echo %vardas% %surname% %sex% %age%>>%~f1
echo.
cls
goto PRA
:AAA
cls
echo _________________________
more %~f1
echo _________________________
goto PRA