![]() |
Скрипт, читающий некоторые символа в первой строке нескольких файлов.
Доброго дня!
Есть дурацкая задача - в каталог (мусорка, разных файлов много) падают определенные файлы (по имени) определенной структуры. Задача- в шедулере поставить батник, который при наличии таких файлов (от 0 до 30 в определенный момент времени) считывал первую строку, из нее вычленял несколько символов из нескольких позиций и в зависимости от значений делал какие-либо манипуляции с файлом (в основном - копирование с посылом сообщения). Проблемы - файла начинаются с ~, внутри файла - разделитель | (пример первой строки файлов 1|20210727|131511|YSN20802.742|898|898|0 1|20210727|115807|YSB20847.742|35|35|0 1|20210727|115801|YTI20825.742|5140|5140|0) Нужно вытащить с 3 символа 18-й позиции и 2 символа с 24-й Столкнулся с чем: 1. Если работать напрямую с файлом, то вроде норм set /p val=<~yh2080f.742 set val1=%val:~18,3% set val2=%val:~24,2% echo %val1% echo %val2% pause результат: D:\cmail>echo YSN YSN D:\cmail>echo 02 02 D:\cmail>pause Для продолжения нажмите любую клавишу . . . 2. если работать с циклом, то начинается приколизм @echo off rem Setlocal Enabledelayedexpansion Enableextensions if not exist D:\111\?Y*.* goto end rem echo.%%i for %%i in ("D:\111\?Y*.*") do ( set val= set val1= set val2= echo.begin echo.%%i set /p val=<%%i rem set val=%val:|=1% set val set val1=%val:~18,3% set val2=%val:~24,2% echo %val1% echo %val2% echo .end ) :end echo .bye результат D:\111\~YH2080A.742 val=1|20210727|115712|YSB20853.742|32|31|1 Режим вывода команд на экран (ECHO) отключен. Режим вывода команд на экран (ECHO) отключен. .end Думал, что проблема в разделителе в файле - разремил замещение разделителя на 1 получилось вообще непонятно begin D:\111\~YH2080A.742 "1" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. прошу помощи. |
1.
пример файла в архиве чтобы видеть его структуру, кодировку и расширение 2. Цитата:
3. четко не понятно что делать в цикле, кроме как вычленять что-то из файлов, а какие файлы выбирать, откуда, по какой маске или какому критерию и в какой промежуток времени, если это будет из планировщика. Или это сами сделаете? |
Код:
@Echo Off Ваш вариант
Код:
@Echo Off Код:
@Echo Off Код:
Call Echo %%val1%% %%val2%% %%i "%%val%%" Код:
@Echo Off |
Время: 23:43. |
Время: 23:43.
© OSzone.net 2001-