Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как объединить два скрипта в один?

Ответить
Настройки темы
CMD/BAT - Как объединить два скрипта в один?

Новый участник


Сообщения: 44
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте. Я использую последовательно два скрипта.

Первый, в котором удаляются все строки, кроме тех, где содержится "slovo"
Код: Выделить весь код
@echo off
set fname=file1.txt
findstr /c:"slovo" %fname% >log.tmp
del %fname%
move log.tmp %fname%
Второй, который удаляет первые 6 символов в каждой строке
Код: Выделить весь код
@echo off
SetLocal enabledelayedexpansion
set File=file1.txt
set nn=6
set Out=file2.txt
For /F "usebackq delims=" %%A In ("%File%") Do (
    Set "String=%%A"& Set "String=!String:~%nn%!"
    Echo.!String!>>%out%
    )
exit /b
Можно ли эти скрипты объединить в один, чтобы не запускать два батника. А также чтобы в конечном результате file2.txt перезаписывался, а не дописывался.

Отправлено: 02:17, 08-12-2019

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
powershell -command "((gc C:\temp\1.txt) -match 'slovo').Substring(6) > C:\temp\2.txt"

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 08-12-2019 в 09:42.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:35, 08-12-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата temphard:
Можно ли эти скрипты объединить в один, чтобы не запускать два батника. А также чтобы в конечном результате file2.txt перезаписывался, а не дописывался. »
powershell
Код: Выделить весь код
$file = 'file1.txt'
$arr = gc $file -enc OEM
$arr|?{$_ -notmatch 'slovo'}|%{$_ -replace '^.{6}'}|out-file $file -enc OEM

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:55, 08-12-2019 | #3


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Первый файл останется неизменным
Код: Выделить весь код
@Echo Off
	Set "FileIn=Z:\Box_In\1.txt"
	Set "FileOut=Z:\Box_Out\2.txt"
	Set "Word=sLoVo"
	Set /A N=6

	>"%FileOut%" (For /F "usebackq delims=" %%s In (`2^>nul FINDSTR /I /C:"%Word%" "%FileIn%"`) Do (
		Set "String=%%s"
		(Call Echo %%String:~%N%%%)
	))
Exit /B 0

Первый файл будет содержать только выбранные строки, как в Ваших предыдущих скриптах
Код: Выделить весь код
@Echo Off
	Set "FileIn=Z:\Box_In\1.txt"
	Set "FileOut=Z:\Box_Out\2.txt"
	Set "Word=sLoVo"
	Set /A N=6

	2>nul Del "%FileIn%.tmp" 
	>"%FileOut%" (For /F "usebackq delims=" %%s In (`2^>nul FINDSTR /I /C:"%Word%" "%FileIn%"`) Do (
		Set "String=%%s"
		>>"%FileIn%.tmp" (Echo %%s)
		(Call Echo %%String:~%N%%%)
	))
	>nul Move /Y "%FileIn%.tmp" "%FileIn%"
Exit /B 0
Выделены отличия первого скрипта от второго

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 08-12-2019 в 10:42.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:27, 08-12-2019 | #4


Новый участник


Сообщения: 44
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Первый файл останется неизменным »
Цитата megaloman:
Первый файл будет содержать только выбранные строки, как в Ваших предыдущих скриптах »
Шикарно! Спасибо.
P.S. За powershell я тоже благодарен, но в данном случае мне именно батник нужен.

Отправлено: 10:13, 09-12-2019 | #5


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


temphard, код, который я привёл - это для батника.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 11:17, 09-12-2019 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как объединить два скрипта в один?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Графика - [решено] Чем объединить два файла в один? Peter15 Программное обеспечение Windows 12 13-02-2022 09:13
CMD/BAT - [решено] Нужно объединить два батника в один BKPB Скриптовые языки администрирования Windows 3 12-07-2019 13:08
7 / 2008 R2 - объединить два wim фаила в один YURSA Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 26 26-01-2013 23:45
FreeBSD - объединить два интернет канала в один VictorSh Общий по FreeBSD 8 29-12-2011 18:14
Как объединить два скрипта в один Fantasy22 AutoIt 1 04-12-2009 12:32




 
Переход