Показать полную графическую версию : Редактирование текстового файла с нестандартными символами.
Есть файл. Содержит нестандартные символы переноса строки. Изменить одну его часть, не убрав эти символы.
Используйте WSH, PoSH, записывая конец строки ручками, например:
TextStream.Write "Text" & vbLf
Что это было? Я не разбираюсь в этом! Что значит
TextStream.Write "Text" & vbLf » ?
При запуске этого с ; (в конце) в файле file.wsh пишет:
Неверная ссылка на объект. Куда что приписывать?
Я не разбираюсь в этом! »
Тогда указывайте детали: путь к файлу, что и на что менять (и по какому принципу).
@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
Ещё один вариант "гибридного" пакетного файла:
' 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))
.
Я долго мучился, пытаясь что-то сделать со строчкой
'%x% start "" /wait wscript /nologo /e:vbscript "%~f0" "!string:1.7.5=ABCDE!") else ( » :(
Проблема в том, что заместо 1.7.5 там должно быть подставлено значение переменной %version% , а вместо ABCDE - %new%. Помогите, никак не смог. Всё остальное я смог как-то подстроить под себя сам.
Вот что получилось:
' 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", конечно, будете устанавливать сами.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.