Задать вопрос
@masmirnov

Как парсить txt файл с помощью bat файла?

Доброго времени суток! Имеется папка с текстовыми файлами.
Структура файлов:
Имя - Иван
Фамилия - Иванов
Телефон - 79999999999
Нужно создать папку для каждого такого пользователя и переместить туда соответствующий файл. Название папок - номер телефона пользователя. Попытался написать вот такой bat скрипт для решения задачи:
@echo off
 set Src = D:\tmp
 For %%i in ("%Src%\*.txt") do (
	set filepath = %%i
	For %%a in ('findstr "Телефон" %filepath%') do (
	set foldername = %%a
	md %Src%\%foldername%
	)
	move %Src%\%%~nxi %Src%\%foldername%
)

Но он не работает.
Буду благодарен, если поможете исправить этот скрипт чтобы заработал или предложите свой вариант!
  • Вопрос задан
  • 8073 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@res2001
Developer, ex-admin
Посмотрите описание:
for /?
Ваш случай - это for /f - построчно читает файл и разбивает его на лексемы.
Например:
for /f "usebackq tokens=1,2 delims= -" %%a in ("%Src%\*.txt") do (
  echo.%%a = %%b
)

На счет set, могу добавить к ответу Saboteur еще такой момент - чтоб пробелы, случайно попавшие в конец строки, не присваивались переменной нужно команду давать в таком виде:
set "Src=D:\tmp"
Ваша задача нормально решается на cmd, поэтому можно не искать другой вариант.
На счет других вариантов - из коробки в винде присутствуют, кроме cmd: PowerShell, JavaScript, VBScript
Ответ написан
Комментировать
в cmd для того чтобы присвоенное значение использовалось далее
в строках
set foldername=%%a
  md %Src%\%foldername%

надо использовать

set foldername=%%a
  md %Src%\!foldername!


и в самом начале написать
SETLOCAL ENABLEDELAYEDEXPANSION

учтите п-та: в скрипте еще несколько ошибок имеется...
Ответ написан
Комментировать
@aosvxs7ui
for /f "tokens=* delims=" %%a in ('type [путь до файла]') do (
for %%b in (%%a) do (
то что ты будешь делать с тем что получил из строки
)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы