2015-08-13 2 views
0

им будет переформулировать вопрос (стирая первый, так как я не могу ответить :-():Строки комментариев с дубликатом шаблоном в файле

У меня есть сценарий летучей мыши hobocopy что помимо делать инкрементальные резервное копирование, создает файл для восстановления резервной копии, с таким родом линии:.

xcopy "w:\path\to\file\2015-08-13__11_56_INCREMENTAL\file" "E:\path\to file\file*" /E /C /I /Q /R /Y /X 

первый путь меняется каждый раз, когда я excuted ИНКА резервного копирования, но я хочу, чтобы закомментировать строки, которые повторяются вторым путем, за исключением последнего из них (во избежание копирования и перезаписи файла.

Это часть летучей мыши, где я заселить restore.bat:

for /f "tokens=1,* delims=¶" %%i in ('dir /A-D /s /B /W "!ruta_bkp!"') do ( 
    set "str=%%i*" 
    set str=!str:_INCREMENTAL\=_INCREMENTAL! 
    set str=!str:%rutadest%=! 
    set str=!str:%times%=!  
    set def=!ruta:~0,3!!str! 

    echo xcopy "%%i" "!def!" /E /C /I /Q /R /Y /X >> "!direc!\TO_RESTORE.bat" 
) 

Как вы видите, я пишу строка для каждого файла в реж commnad, но, как этот файл имеет черты ПОЖИЛЫХ КАЗНИ, я хочу закомментируйте строки, которые повторяют второй путь ... так что это будет что-то вроде:

for line in TO_RESTORE_BAT{ 
    findstr pattern(!def!) --> if found --> REM line 
} 
echo xcopy %%i !def! >> TO_RESTORE_BAT 

или что-то в этом роде ...

Спасибо.

+0

Является ли последняя строка не прокомментированной, потому что в правой части отсутствует символ '5, так что это не истинный дубликат шаблона? – dbenham

+0

Ничего, это не может быть так, потому что прокомментированная строка '44444PP444444' также неуравновешена. Вы должны быть более точными относительно того, какие шаблоны (ы) прокомментированы. – dbenham

+0

Извините, файл был только, например. просто для того, чтобы показать, как должен работать скрипт, и, конечно же, реальный шаблон не является «PP», как, например, на локальном пути ... im собирается переформулировать мой вопрос ... –

ответ

0

Попробуйте:

$NewFile = @() 
$TextFile = Get-Content c:\test.txt 
$TextFile | % { 
    if ($_ -match "\D+") 
    { 
    $NewFile += "REM $_" 
    } 
    else 
    { 
    $NewFile += $_ 
    } 
} 
$NewFile | Out-File c:\test.txt 

* Конечно, это в случае, если дубликат шаблон является письмо символы, как ваш пример в противном случае вам нужно изменить регулярное выражение "\D+", которое означает не цифры на что-то другое

Check это: http://www.powershellcookbook.com/recipe/qAxK/appendix-b-regular-expression-reference

+0

Спасибо Авшалом, скрипт работает, но он также комментирует последнюю строку с рисунком .... в любом случае я делаю ошибку, формулирующую вопрос, поэтому я собираюсь сделать это снова ... –