CMD/BAT - Скрипт, читающий некоторые символа в первой строке нескольких файлов.

Ответить
Аватара пользователя
Alexeyshka

CMD/BAT - Скрипт, читающий некоторые символа в первой строке нескольких файлов.

Сообщение Alexeyshka »

Доброго дня!

Есть дурацкая задача - в каталог (мусорка, разных файлов много) падают определенные файлы (по имени) определенной структуры.

Задача- в шедулере поставить батник, который при наличии таких файлов (от 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=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=
Аватара пользователя
alpap

Re: CMD/BAT - Скрипт, читающий некоторые символа в первой строке нескольких файлов.

Сообщение alpap »

1.

пример файла в архиве чтобы видеть его структуру, кодировку и расширение

2.


Цитата Alexeyshka:



Нужно вытащить
CMD/BAT - Скрипт, читающий некоторые символа в первой строке нескольких файлов.




куда? В отдельный файл или что делать с этим.

3.

четко не понятно что делать в цикле, кроме как вычленять что-то из файлов, а какие файлы выбирать, откуда, по какой маске или какому критерию и в какой промежуток времени, если это будет из планировщика. Или это сами сделаете?
Аватара пользователя
megaloman

Re: CMD/BAT - Скрипт, читающий некоторые символа в первой строке нескольких файлов.

Сообщение megaloman »

Код:

Код: Выделить всё

@Echo Off
cls
	Set "FileIn=Z:\Box_In\~???????.???"
	For %%f In ("%FileIn%") Do Call :OutFirst "%%f" 18 3 24 2
Pause
Exit /B 0
:OutFirst
	Set /P First=

Alexeyshka,


Ваш вариант

[spoiler]Код:
[/spoiler]

Код: Выделить всё

@Echo Off
cls
	For %%i In ("Z:\Box_In\~y??????.???") Do (
		Set /P val=

или так:

Код:

Код: Выделить всё

@Echo Off
cls
SetLocal EnableExtensions EnableDelayedExpansion
	For %%i In ("Z:\Box_In\~y??????.???") Do (
		Set /P val=

Если хочется увидеть на экране первую строку, то в Echo её надо взять в кавычки, так как символ "|" служебный



Код:

Код: Выделить всё

		Call Echo %%val1%% %%val2%%   %%i   "%%val%%"





или так:

Код:

Код: Выделить всё

@Echo Off
cls
	For %%i In ("Z:\Box_In\~y??????.???") Do Set /P val=
Ответить

Вернуться в «Скриптовые языки администрирования Windows»