powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите оптимизировать batnik
5 сообщений из 5, страница 1 из 1
Помогите оптимизировать batnik
    #39012867
Ingvar2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Я батники никогда не писал, но по работе пришлось написать. Здесь приложу часть своего батника, который, как мне кажется написан очень не оптимально. Прошу подсказать как его можно оптимизировать.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
@echo off
:: имеется файл out.txt с результатом селекта, мне в нем надо оставить только восьмую строчку, к сожалению я так сделать не смог и записал поиск по уникальным данным из четвертой строки с пересохранением строки с найденными данными в тот же файл, но лучше если тут будет жестко прописать оставлять только восьмую строчку
set fname=out.txt
findstr /c:"4 |       1" %fname% >log.tmp
del %fname%
move log.tmp %fname%
:: дальше я начинаю парсить перезаписанный файл out.txt: записываю новый файл xxxx.txt, где xxx равны значениям 8-11 символов единственной строки и записываю в данный файл значения 27го и 37го символов
For /F "Tokens=*" %%A In (out.txt) Do Call :_Func "%%A"
Exit /B 0
:_Func
  Set "Str=%~1"
  Set "StrNum=%Str:~7,4%"
  Set "StrOne=%Str:~26,1%"
  Set "StrTwo=%Str:~36,1%"
  For /F "Tokens=1 Delims=$" %%A In ("%StrOne%%StrTwo%") Do Echo.%%A>%StrNum%.txt
:: удаляю старый файл
del out.txt
:: проверяю что если в каталоге old отсутствует файл xxxx.txt, то переношу данный файл в этот каталог и записываю результат в лог, а если файл имеется, то только заношу данные в лог
IF not EXIST old\%StrNum%.txt GOTO 1
IF EXIST old\%StrNum%.txt GOTO 2
:1
MOVE %StrNum%.txt old\%StrNum%.txt
echo %StrNum% ok >>log.txt
:: вместо нижеследующей строки по-хорошему, что если в текст в файле = 35 , то должна быть одна запись в лог, а если не равен 35, то другая
echo %StrNum% - %StrOne%%StrTwo% >>log.txt
Exit /B 0
:2   
echo %StrNum% fail >>log.txt
Exit /B 0
...
Рейтинг: 0 / 0
Помогите оптимизировать batnik
    #39012885
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ingvar2 имеется файл out.txt с результатом селекта, мне в нем надо оставить только восьмую строчку
Берешь любой sed для виндов. Их несколько есть, можно либо из комплекта GnuWin, можно из MSYS, можно из CygWin. Есть и еще варианты, но это самые известные (я MSYS'овским пользуюсь)...
И потом просто делаешь:
sed "8q;d" <out.txt >result.txt
Можешь записать это в bat файл или выполнять из командной строки.
...
Рейтинг: 0 / 0
Помогите оптимизировать batnik
    #39012981
Ingvar2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlБерешь любой sed для виндов. Их несколько есть, можно либо из комплекта GnuWin, можно из MSYS, можно из CygWin.
Одно из требований - данный батник должен работать без дополнительной установки какого-либо ПО.
...
Рейтинг: 0 / 0
Помогите оптимизировать batnik
    #39012995
Ingvar2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор:: имеется файл out.txt с результатом селекта, мне в нем надо оставить только восьмую строчку, к сожалению я так сделать не смог и записал поиск по уникальным данным из четвертой строки с пересохранением строки с найденными данными в тот же файл, но лучше если тут будет жестко прописать оставлять только восьмую строчку
Нашел у себя ошибку в описании, корректно будет
автор:: имеется файл out.txt с результатом селекта, мне в нем надо оставить только восьмую строчку, к сожалению я так сделать не смог и записал поиск по уникальным данным из восьмой строки с пересохранением строки с найденными данными в тот же файл, но лучше если тут будет жестко прописать оставлять только восьмую строчку
...
Рейтинг: 0 / 0
Помогите оптимизировать batnik
    #39013226
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ingvar2,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
@echo off
setlocal enabledelayedexpansion

set fname=out.txt
set log=log.txt

@for /f "skip=7 delims=" %%A in (%fname%) do @(
  set str=%%A
  set strNum=!str:~7,4!
  set strData=!str:~26,1!!str:~36,1!
  
  goto :skiprest
)

:skiprest
del %fname%
@set fname=%strNum%.txt

echo %strData%> %fname%

if exist old\%fname% (
  @echo %strNum% fail >> %log%
  exit /b 0
)

move %fname% old\%fname%
echo %strNum% ok >> %log%
:: echo %strNum% - %strData% >> %log%
if [35] == [%strData%] (
  echo %strNum% - одна запись в лог >> %log%
) else (
  echo %strNum% - другая >> %log%
)


exit /b 0

...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите оптимизировать batnik
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]