![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Скрипт, читающий некоторые символа в первой строке нескольких файлов. |
|
CMD/BAT - Скрипт, читающий некоторые символа в первой строке нескольких файлов.
|
Новый участник Сообщения: 1 |
Доброго дня!
Есть дурацкая задача - в каталог (мусорка, разных файлов много) падают определенные файлы (по имени) определенной структуры. Задача- в шедулере поставить батник, который при наличии таких файлов (от 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" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. прошу помощи. |
|
Отправлено: 15:43, 13-08-2021 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать 1.
пример файла в архиве чтобы видеть его структуру, кодировку и расширение 2. Цитата Alexeyshka:
3. четко не понятно что делать в цикле, кроме как вычленять что-то из файлов, а какие файлы выбирать, откуда, по какой маске или какому критерию и в какой промежуток времени, если это будет из планировщика. Или это сами сделаете? |
|
Отправлено: 16:42, 13-08-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать @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=<%1 Call Set "First1=%%First:~%2,%3%%" Call Set "First2=%%First:~%4,%5%%" Echo %First1% %First2% %1 Exit /B Ваш вариант
@Echo Off cls For %%i In ("Z:\Box_In\~y??????.???") Do ( Set /P val=<"%%i" Call Set "val1=%%val:~18,3%%" Call Set "val2=%%val:~24,2%%" Call Echo %%val1%% %%val2%% %%i ) Pause Exit /B 0 @Echo Off cls SetLocal EnableExtensions EnableDelayedExpansion For %%i In ("Z:\Box_In\~y??????.???") Do ( Set /P val=<"%%i" Set "val1=!val:~18,3!" Set "val2=!val:~24,2!" Echo !val1! !val2! %%i ) Pause Exit /B 0 |
------- Последний раз редактировалось megaloman, 14-08-2021 в 08:58. Отправлено: 16:42, 13-08-2021 | #3 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Удаление последнего символа в каждой строке txt - файла | Мария_Айдарова@vk | Скриптовые языки администрирования Windows | 14 | 01-08-2019 18:23 | |
PowerShell - [решено] скрипт, читающий из текстового файла список расширений | IVa_ | Скриптовые языки администрирования Windows | 1 | 10-12-2014 19:01 | |
CMD/BAT - [решено] Как в строке оставить лишь 2 символа, не зная её размера | white155 | Скриптовые языки администрирования Windows | 4 | 09-07-2011 21:43 | |
[решено] Замена символа в строке, по номеру [PERL] | WestBronx | Вебмастеру | 1 | 22-03-2008 14:31 | |
Номер символа в строке | Nealles | Программирование и базы данных | 3 | 22-05-2003 00:41 |
|