Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - Замена текста.

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


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

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


Код: Выделить весь код
@echo off
Setlocal Enabledelayedexpansion Enableextensions
 
Set From=9430
Set Into=(какое выражение вставить?)
Set Filename=list.txt
Set NewFileName=file.txt
 
if exist "%NewFileName%" del "%NewFileName%"
for /F "UseBackQ delims= eol=" %%A in ("%filename%") do (
  Set St=%%A
  Set St=!ST:%From%=%Into%!
  Echo !St!>>"%NewFileName%"
)
В list 10000 строк,все они одинаковые.
Как в такого виде bat файле сделать что бы число 9430 заменялось на числа возрастающие от 1 до 10000 по строчно.

Отправлено: 21:48, 14-06-2015

 

Ветеран


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

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


Воспользуйтесь sed — Википедия: sed for Windows.

Отправлено: 23:46, 14-06-2015 | #2



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

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


Ветеран


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

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


Цитата TranCrey:
Как в такого виде bat файле сделать что бы число 9430 заменялось… »
Примерно так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=%~1
set sFindWhat=9430
set /a iReplaceWith = 0

call :GetTemporaryName

if defined sSourceFile (
	if exist "%sSourceFile%" (
		>"%TemporaryName%" (
			for /f "usebackq delims=" %%i in (
				"%sSourceFile%"
			) do (
				set /a iReplaceWith += 1
				set sLine=%%~i
				call echo %%sLine:!sFindWhat!=!iReplaceWith!%%
			)
		)
		
		if exist "%sSourceFile%.bak" del /f /q "%sSourceFile%.bak"
		ren "%sSourceFile%" "%sSourceFile%.bak"
		>nul copy "%TemporaryName%" "%sSourceFile%"
		del /f /q "%TemporaryName%"
	) else (
		echo Can't find source file [%sSourceFile%].
		exit /b 2
	)
) else (
	echo Usage: %~nx0 ^<Source file^>
	exit /b 1
)

endlocal
exit /b 0
rem ==========================================================================

rem ==========================================================================
rem Функция GetTemporaryName()
rem ==========================================================================
:GetTemporaryName
	setlocal enableextensions enabledelayedexpansion
	
:NextName
	set sTempName=%temp%\temp%random%.tmp
	
	if exist "%sTempName%" goto :NextName
	
	set sProcName=%~0
	
	endlocal & set %sProcName:~4%=%sTempName%
	exit /b 0
rem ==========================================================================


Если же действительно:
Цитата TranCrey:
В list 10000 строк,все они одинаковые. »
то проще тупо взять одну строку (первую) и перечислить её 10000 раз:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=%~1
set sFindWhat=9430
set /a iReplaceWith = 0

call :GetTemporaryName

if defined sSourceFile (
	if exist "%sSourceFile%" (
		<"%sSourceFile%" >nul set /p sLine=
		>"%TemporaryName%" (
			for /l %%i in (1, 1, 10000) do (
				call echo %%sLine:!sFindWhat!=%%~i%%
			)
		)
		
		if exist "%sSourceFile%.bak" del /f /q "%sSourceFile%.bak"
		ren "%sSourceFile%" "%sSourceFile%.bak"
		>nul copy "%TemporaryName%" "%sSourceFile%"
		del /f /q "%TemporaryName%"
	) else (
		echo Can't find source file [%sSourceFile%].
		exit /b 2
	)
) else (
	echo Usage: %~nx0 ^<Source file^>
	exit /b 1
)

endlocal
exit /b 0
rem ==========================================================================

rem ==========================================================================
rem Функция GetTemporaryName()
rem ==========================================================================
:GetTemporaryName
	setlocal enableextensions enabledelayedexpansion
	
:NextName
	set sTempName=%temp%\temp%random%.tmp
	
	if exist "%sTempName%" goto :NextName
	
	set sProcName=%~0
	
	endlocal & set %sProcName:~4%=%sTempName%
	exit /b 0
rem ==========================================================================

Имя исходного файла задаётся параметром пакетного файла (также можно просто перетащить исходный файл на пакетный файл в Проводнике).

Отправлено: 00:18, 15-06-2015 | #3



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Сложная замена текста в файле niverprof Скриптовые языки администрирования Windows 11 22-12-2014 11:45
CMD/BAT - Замена текста Fevzy Скриптовые языки администрирования Windows 9 28-04-2013 21:22
Любой язык - Поиск и замена текста firstarey Скриптовые языки администрирования Windows 2 09-04-2013 08:44
C/C++ - [решено] Поиск и замена текста Simpler Программирование и базы данных 15 01-12-2010 16:03
Офис и Текст - Замена текста Котяра Программное обеспечение Windows 1 29-09-2008 13:51




 
Переход