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

Название темы: Замена текста.
Показать сообщение отдельно

Ветеран


Сообщения: 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

Название темы: Замена текста.