2017-01-31 6 views
0

Я пытаюсь заменить текст «HEADER» в файле новой страницей управляющего символа (FF - Hex value = C). Я был в состоянии сделать это, используя SED, как показано ниже:Заменить управляющий символ с помощью JREPL.bat

sed -I "s/HEADER/\xC/g" c:\myfile.txt 

Я хочу, чтобы иметь возможность сделать это с помощью JREPL.BAT. У меня попробовать следующий без успеха:

c:\jrepl "HEADER" "\xC" /f myfile.txt /o - 
c:\jrepl "HEADER" "\xC" /x /f myfile.txt /o - 

Причина, почему я хочу сделать это с jrepl, чтобы избежать необходимости установки СЭД в каждом компьютере, который будет в конце концов, нужно запустить сценарий. Любые идеи о том, как это сделать?

+2

'C' = 4бит, вы пробовали с' \ x0C'? –

+0

Я попробовал это, как показано ниже, и не удача. Что он делает, когда я запускаю его, так это то, что он заменяет строку «HEADER» в файле с помощью \ x0C – Ezy

+0

c: \ jrepl «HEADER» \ x0C/f myfile.txt/o - – Ezy

ответ

1

Вам не нужно несколько сотен строк пакетного файла, чтобы выполнить замену так же просто, как эта. Файл две строки Пакетное ниже сделать то же самое:

@set @a=0 // & cscript //nologo //E:JScript "%~F0" <myfile.txt> out.txt & move /Y out.txt myfile.txt & goto :EOF 

WScript.Stdout.Write(WScript.Stdin.ReadAll().replace(/HEADER/g,"\x0C")); 

Для дальнейшего описания синтаксиса регулярных выражений, см this page.

EDIT

Чтобы легко проверить эту программу, вы можете изменить его таким образом:

@set @a=0 /* 
cscript //nologo //E:JScript "%~F0" <myfile.txt> out.txt 
move /Y out.txt myfile.txt 
goto :EOF */ 

WScript.Stdout.Write(WScript.Stdin.ReadAll().replace(/HEADER/g,"\x0C")); 

Затем откройте командную-проворная сессию и выполнить его из командной строки в чтобы увидеть на экране любое сообщение об ошибке. Например:

C:>\Users\Antonio\test type myfile.txt 
This is a data line 
HEADER This is the first line at top of page 
This is more data line 


C:>\Users\Antonio\test test.bat 

C:>\Users\Antonio\test cscript //nologo //E:JScript "C:\Users\Antonio\test\test.bat" 0<myfile.txt 1>out.txt 

C:>\Users\Antonio\test move /Y out.txt myfile.txt 
Se han movido   1 archivos. 

C:>\Users\Antonio\test goto :EOF */ 


C:>\Users\Antonio\test type myfile.txt 
This is a data line 
♀ This is the first line at top of page 
This is more data line 
+0

Aacini, не уверен, что я делаю неправильно. Я помещаю эти две строки кода в пакетный файл в том же каталоге, где находится myfile.txt. Не уверен, что мне нужно изменить что-то еще, поскольку оно, похоже, не работает. – Ezy

+0

См. Редактирование в моем ответе. Я предлагаю вам сделать то же самое, а затем сообщить об ошибках, появляющихся на экране, потому что «он не работает» не может помочь ... – Aacini

+0

Отлично Aacini, это сработало! Это хороший способ сделать то же самое, что и с JREPL.bat, но без вызова исполняемого файла. Большое спасибо. – Ezy