![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Замена текста. |
|
CMD/BAT - Замена текста.
|
Новый участник Сообщения: 16 |
@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%" ) Как в такого виде bat файле сделать что бы число 9430 заменялось на числа возрастающие от 1 до 10000 по строчно. |
|
Отправлено: 21:48, 14-06-2015 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Воспользуйтесь sed — Википедия: sed for Windows.
|
Отправлено: 23:46, 14-06-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата TranCrey:
Скрытый текст
@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:
Скрытый текст
@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 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - Сложная замена текста в файле | 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 |
|