Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Замена после символа, вставка перед символом (http://forum.oszone.net/showthread.php?t=240001)

AlexVong 05-08-2012 02:42 1964865

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

Anonymоus 05-08-2012 05:37 1964875

Код:

@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


AlexVong 05-08-2012 13:07 1964968

Anonymоus
Выводится такое сообщение
Код:

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

Anonymоus 05-08-2012 13:16 1964974

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


AlexVong 05-08-2012 13:31 1964988

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


Время: 11:31.

Время: 11:31.
© OSzone.net 2001-