Компьютерный форум 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=282954)

semcrm 31-05-2014 10:21 2358083

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

Iska 31-05-2014 10:44 2358093

Используйте WSH, PoSH, записывая конец строки ручками, например:
Код:

TextStream.Write "Text" & vbLf

semcrm 31-05-2014 14:38 2358172

Что это было? Я не разбираюсь в этом! Что значит
Цитата:

Цитата Iska
TextStream.Write "Text" & vbLf »

?
При запуске этого с ; (в конце) в файле file.wsh пишет:
Неверная ссылка на объект. Куда что приписывать?

Iska 31-05-2014 20:12 2358299

Цитата:

Цитата semcrm
Я не разбираюсь в этом! »

Тогда указывайте детали: путь к файлу, что и на что менять (и по какому принципу).

Georgio 31-05-2014 21:32 2358345

Код:

@echo off
for /f %%i in ('
 ^<"1.7.5.json.txt" find /c /v ""
') do (
set m=%%i
)
set "command=vbscript:CreateObject("Scripting.FileSystemObject").GetStandardStream(1).Write(replace(replace("!string:1.7.5=ABCDE!","@#$",chr(34)),"$#@",chr(32))&chr(10))&close()"
setlocal enabledelayedexpansion
chcp 1251>nul
(
for /f "usebackq delims=" %%i in ("1.7.5.json.txt") do (
 set /a n+=1
 set string=%%i
 set "string=!string:"=@#$!"
 set "string=!string: =$#@!"
 if !n! lss %m% (
  mshta "%command%"
  ) else (
  mshta "%command:&chr(10)=%"
  )
 )
)>"Что должно получиться.txt"
endlocal
exit /b


Georgio 02-06-2014 08:19 2358755

Ещё один вариант "гибридного" пакетного файла:

Код:

' 2>nul& @cls& echo off& set "x= 2>nul& cls&"
'%x% for /f %%i in ('^<"1.7.5.json.txt" find /c /v ""') do set m=%%i
'%x% chcp 1251>nul
'%x% setlocal enabledelayedexpansion>"Что должно получиться.txt"
'%x% for /f "usebackq delims=" %%i in ("1.7.5.json.txt") do (
'%x% set string=%%i
'%x% set string=!string:"=@#$!
'%x% set /a n+=1
'%x% if !n! lss %m% (
'%x% start "" /wait wscript /nologo /e:vbscript "%~f0" "!string:1.7.5=ABCDE!") else (
'%x% set /p=%%i<nul>>"Что должно получиться.txt"))
'%x% endlocal& exit /b
CreateObject("Scripting.FileSystemObject").OpenTextFile("Что должно получиться.txt",8,true).Write(replace(WScript.Arguments(0),"@#$",chr(34))&chr(10))

.

semcrm 03-06-2014 12:08 2359329

Я долго мучился, пытаясь что-то сделать со строчкой
Цитата:

Цитата Georgio
'%x% start "" /wait wscript /nologo /e:vbscript "%~f0" "!string:1.7.5=ABCDE!") else ( »

:(

Проблема в том, что заместо 1.7.5 там должно быть подставлено значение переменной %version% , а вместо ABCDE - %new%. Помогите, никак не смог. Всё остальное я смог как-то подстроить под себя сам.

Georgio 03-06-2014 15:15 2359421

Вот что получилось:

Код:

' 2>nul& @cls& echo off& set "x= 2>nul&"
'%x% set /p "string="<"1.7.5.json.txt"
'%x% set "version=%string:~11,5%"
'%x% set "new=ABCDE"
'%x% for /f %%i in ('^<"1.7.5.json.txt" find /c /v ""') do set m=%%i
'%x% chcp 1251>nul
'%x% copy nul "Что должно получиться.txt">nul
'%x% for /f "usebackq delims=" %%i in ("1.7.5.json.txt") do (
'%x% set "string=%%i"
'%x% call set "string=%%string:"=@#$%%"
'%x% call set "string=%%string:%version%=%new%%%"
'%x% set /a n+=1
'%x% call echo %%n%%| >nul findstr /vx %m%&& (
'%x% call start "" /b /wait cscript /nologo /e:vbscript "%~f0" "%%string%%")|| (
'%x% call set /p"=%%string%%"<nul>>"Что должно получиться.txt"))
'%x% endlocal& exit /b
CreateObject("Scripting.FileSystemObject").OpenTextFile("Что должно получиться.txt",8,true).Write(replace(WScript.Arguments(0),"@#$",chr(34))&chr(10))

.


Значение переменной "version" будет считываться из файла "1.7.5.json.txt", а значение переменной "new", конечно, будете устанавливать сами.


Время: 02:48.

Время: 02:48.
© OSzone.net 2001-