Замена после символа, вставка перед символом
Возможно ли такое реализовать на vbs или на bat - чтобы во всех текстовых файлах в папке, перед каждой строкой которая начинается с "ZZ0" вставлялось по две строки а в самой строке символы с 1 по 50-ый заменялись пробелами?
|
Код:
@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
|
Anonymоus
Выводится такое сообщение
Код:
Не найден файл: D:\WORK\ Не найден файл: R28.TXT Не найден файл: D:\WORK\ Не найден файл: R50.TXT Для продолжения нажмите любую клавишу . . .
В файла строчки которые начинаются на "ZZ0" есть...
|
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
|
Спасибо!!! Все работает....
|
Время: 21:36.
© OSzone.net 2001-