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

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

Ответить
Настройки темы
CMD/BAT - [решено] Замена после символа, вставка перед символом

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


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

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


Возможно ли такое реализовать на vbs или на bat - чтобы во всех текстовых файлах в папке, перед каждой строкой которая начинается с "ZZ0" вставлялось по две строки а в самой строке символы с 1 по 50-ый заменялись пробелами?

Отправлено: 02:42, 05-08-2012

 

Старожил


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

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


Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion

Set SearchFor=ZZ0
Set String1=Test 123
Set String2=A random string
Set Ext=txt
Set WorkDir=test

rem Получаем список нужных файлов
For /F "delims=" %%A In ('Dir "%WorkDir%\*.%Ext%" /B') Do (
    rem Проверка на то, есть ли в файле искомые символы
    Find "%SearchFor%" "%WorkDir%\%%~A">nul&&(
        If Exist "%TEMP%\tmpfile.tmp" Del "%TEMP%\tmpfile.tmp"
        rem Обработка файла построчно
        For /F "delims=" %%B In (%WorkDir%\%%~A) Do (
            rem Проверка на то, являются ли искомые символы началом строки
            Set String=%%B
            If "!String:~,3!"=="%SearchFor%" (
                rem Дописываем две строки перед найденной и саму строку с заменой первых пятидесяти символов пробелами
		>>"%TEMP%\tmpfile.tmp" (
                    Echo.%String1%
                    Echo.%String2%
                    Echo.                                                  !String:~50!
                )
            ) Else (
                Echo %%B>>"%TEMP%\tmpfile.tmp"
            )
        )
        rem Удаляем оригинал и переносим на его место временный файл
        Del "%WorkDir%\%%~A"&&Move "%TEMP%\tmpfile.tmp" "%WorkDir%\%%~A"
    )
)
Pause&Exit

Отправлено: 05:37, 05-08-2012 | #2



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

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


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


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

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


Anonymоus
Выводится такое сообщение
Код: Выделить весь код
Не найден файл: D:\WORK\  Не найден файл: R28.TXT  Не найден файл: D:\WORK\  Не найден файл: R50.TXT  Для продолжения нажмите любую клавишу . . .
В файла строчки которые начинаются на "ZZ0" есть...

Отправлено: 13:07, 05-08-2012 | #3


Старожил


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

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


AlexVong, исправил, забыл в for путь в скобки заключить
Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion

Set SearchFor=ZZ0
Set String1=Test 123
Set String2=A random string
Set Ext=txt
Set WorkDir=D:\test 123

rem Получаем список нужных файлов
For /F "delims=" %%A In ('Dir "%WorkDir%\*.%Ext%" /B') Do (
    rem Проверка на то, есть ли в файле искомые символы
    Find "%SearchFor%" "%WorkDir%\%%~A">nul&&(
        If Exist "%TEMP%\tmpfile.tmp" Del "%TEMP%\tmpfile.tmp"
        rem Обработка файла построчно
        For /F "usebackq delims=" %%B In ("%WorkDir%\%%~A") Do (
            rem Проверка на то, являются ли искомые символы началом строки
            Set String=%%B
            If "!String:~,3!"=="%SearchFor%" (
                rem Дописываем две строки перед найденной и саму строку с заменой первых пятидесяти символов пробелами
		>>"%TEMP%\tmpfile.tmp" (
                    Echo.%String1%
                    Echo.%String2%
                    Echo.                                                  !String:~50!
                )
            ) Else (
                Echo %%B>>"%TEMP%\tmpfile.tmp"
            )
        )
        rem Удаляем оригинал и переносим на его место временный файл
        Del "%WorkDir%\%%~A"&&Move "%TEMP%\tmpfile.tmp" "%WorkDir%\%%~A"
    )
)
Pause&Exit
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:16, 05-08-2012 | #4


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


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

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


Спасибо!!! Все работает....

Отправлено: 13:31, 05-08-2012 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Замена определённых символов и вставка текста. aggressor_ Скриптовые языки администрирования Windows 9 29-05-2012 15:06
Загрузка - После переустановки Vista->7 перед загрузкой OS получаю сообщение об ошибке Anisimus Microsoft Windows 7 6 16-12-2009 12:43
[решено] Замена символа в строке, по номеру [PERL] WestBronx Вебмастеру 1 22-03-2008 14:31
Надчеркивание над символом VVVas Вебмастеру 5 27-07-2004 00:54
замена символа в тексте (PHP)   Casufi Вебмастеру 3 11-04-2003 11:07




 
Переход