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

csp 25-03-2012 01:39 1886111

Поиск замена текста
 
гм неполистал форум прошу прощения на следующей страницы похожая тема. если не выйдет. отпишу нижу

Starter1 25-03-2012 11:45 1886238

Код:

Set infile=1.txt
Set find=config
Set replace=parametr

setlocal enabledelayedexpansion
for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set LINE=!LINE:%find%=%replace%!
@echo !LINE!>>2.txt
)
endlocal

Ну тут думаю всё понятно. Ищу в файле 1.txt выражение config, а как найду то поменяю его на parametr.

Den 27-03-2012 16:47 1887849

добрый день!
у меня похожая задача только нужно заменить в исходном файле 1.тхт все буквы а на буквы о
извините заранее в этой области я новичок

форум классный! всем удачи

ferget 27-03-2012 17:14 1887874

так и заменяйте

Код:

Set find=a
Set replace=o


Den 27-03-2012 20:47 1888013

спасибо! работает!

adamic 26-07-2016 16:30 2654287

а как пользоваться этим скриптом скажите плииз :help:

Iska 26-07-2016 17:10 2654294

Цитата:

Цитата adamic
а как пользоваться этим скриптом скажите плииз »

Что именно вызывает у Вас затруднение?

user2e@vk 09-09-2016 12:23 2666996

здравствуйте, а как сделать, чтоб изменился текст в файле и пересохранился этот файл, сейчас скрипт делает копию.

x0r 09-09-2016 14:46 2667038

Решение, но на VBS
Есть скрипт, чужой, для поиска и замены, правда на VBS для TotalCommander.
Код:

'
'Скрипт, заменяющий все вхождения заданной строки во всех выделенных файлах на другую строку. Архиполезнейшая вещь!
'
'=========================[ Start of file ]=========================
'  File:        ReplaceInFiles.vbs
'  Description:  Производит поиск текста с заменой
'                в выделенных текстовых файлах
'  Installation: Создайте кнопку на панели TC
'                Команда: "диск:\путь\к\файлу\ReplaceInFiles.vbs"
'                Параметры: "%L" (именно в кавычках!)
'  Copyright:    (c) 2006, Volniy

Option Explicit

Dim FSO, Find_String, Replace_String, F, Buffer, ListFile
Const ForReading = 1, ForWriting = 2

Set FSO = CreateObject("Scripting.FileSystemObject")

Find_String = InputBox("Введите искомую строку", "Поиск и замена")
If Len(Find_String) = 0 Then
  MsgBox "Не задана строка поиска!", vbExclamation, "Поиск и замена"
  WScript.Quit()
End If

Replace_String = InputBox("Введите строку для замены", "Поиск и замена")

Set ListFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
Do While Not ListFile.AtEndOfStream
  Call DoItForThisFile(ListFile.ReadLine)
Loop
ListFile.Close
Set ListFile = Nothing
Set F = Nothing
Set FSO = Nothing

MsgBox "Замена завершена!", vbInformation, "Поиск и замена"
WScript.Quit

Sub DoItForThisFile(FilePath)
  Set F = FSO.OpenTextFile(FilePath, ForReading)
  Buffer = F.ReadAll
  F.Close

  Buffer = Replace(CStr(Buffer), Find_String, Replace_String, 1, -1, 1)
  FSO.CopyFile FilePath, FilePath & ".bak"

  Set F = FSO.OpenTextFile(FilePath, ForWriting)
  F.Write Buffer
  F.Close
End Sub
'=========================[  End of file  ]=========================


Iska 09-09-2016 15:44 2667053

Цитата:

Цитата user2e@vk
здравствуйте, а как сделать, чтоб изменился текст в файле и пересохранился этот файл, сейчас скрипт делает копию. »

Используйте две команды «ren» — для переименования оригинала в *.bak, и последующего переименования нового файла в оригинал.

Akella2007 06-12-2017 17:46 2782790

помогите, пожалуйста решить этот вопрос
http://forum.oszone.net/post-2782789.html#post2782789

спасибо

UncleD 17-07-2019 13:16 2880216

Что-то пошло не так. Нужно в текстовом файле найти текст "ПоказательТипа=0" и заменить его на "ПоказательТипа=", но после выполнения скрипта

Код:

Set infile=1.txt
Set find=ПоказательТипа=0
Set replace=ПоказательТипа=

setlocal enabledelayedexpansion
for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set LINE=!LINE:%find%=%replace%!
@echo !LINE!>>2.txt
)
endlocal

получаю в файле "0=ПоказательТипа==0", так понимаю, что это из-за того что интерпритатор считает "=" служебным символом, а не текстом. Пробовал заключать все значение в кавычки и экранировать "^=", результат тот же или никакой. Как заставить интерпретатор воспринимать всю строку как текстовое выражение?

megaloman 17-07-2019 15:39 2880261

Код:

@Echo Off
cls
        Set "FileIn=Z:\Где файл\1.txt"
        Set "Fin=ПоказательТипа=0"
        Set "Rep=ПоказательТипа="

        mshta vbscript:execute("Set FSO = CreateObject(""Scripting.FileSystemObject"") : Set FF = FSO.OpenTextFile(""%FileIn%"", 1) : InTxt = FF.ReadAll : FF.Close : Set FF = FSO.OpenTextFile(""%FileIn%"", 2, True) : FF.Write Replace(InTxt, ""%Fin%"", ""%Rep%"") : FF.Close :close")
Pause
Exit /B

1.txt должен быть в кодировке 1251
Чтобы решить задачу для конкретного построения файла средствами CMD прикрепите к сообщению Ваш файл 1.txt, надо понимать, например, текст "ПоказательТипа=0" единственный в строке или он внутри другого текста, есть ли другие строки, содержащие =, есть ли строки без =

UncleD 18-07-2019 08:25 2880361

Вложений: 1
Цитата:

Цитата megaloman
1.txt должен быть в кодировке 1251 »

Видимо потому сходу и не отработал, но пока менять ничего не пытался.
Цитата:

Цитата megaloman
Чтобы решить задачу для конкретного построения файла средствами CMD прикрепите к сообщению Ваш файл 1.txt, надо понимать, например, текст "ПоказательТипа=0" единственный в строке или он внутри другого текста, есть ли другие строки, содержащие =, есть ли строки без = »

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

megaloman 18-07-2019 10:18 2880386

UncleD, Основываясь на Вашем файле, задачу формулирую так:
Есть текстовый файл без пустых строк в 1251 (Windows) кодировке.
Надо заменить в файле строку с указанным текстом на другую.
Код:

@Echo Off
cls
>NUL Chcp 1251

        Set "FileIn=Z:\Где файл\11.txt"
        Set "Find=ПоказательТипа=0"
        Set "Repl=ПоказательТипа="

        Set /A NN=1000000, N=0
        FOR /F "usebackq tokens=1* delims=:" %%i IN (`2^>nul FINDSTR /R /N /C:".*" "%FileIn%"`) DO (
                Set /A N=%NN%+%%i &Call Set "@@@%%N%%=%%j"
        )
        FOR /F "usebackq skip=2 tokens=1* delims=[]" %%i IN (`2^>nul Find /I /N "%Find%" "%FileIn%"`) DO (
                Set /A M=%NN%+%%i  &Call Set "@@@%%M%%=%Repl%"
        )
        >"%FileIn%" (FOR /L %%a IN (1000001,1,%N%) DO Call Echo %%@@@%%a%%)
Pause
GoTo :Eof

Моё предыдущее решение делает более общую задачу: ищется указанный текст, и не важно, где он расположен, в том числе и внутри строки, и меняется именно текст, а не строка. Он более устойчив ко всяким служебным для CMD символам в тексте. Дублирую его в минимально изменённом виде:
Код:

@Echo Off
cls
>nul Chcp 1251
        Set "FileIn=Z:\Где файл\11.txt"
        Set "Fin=ПоказательТипа=0"
        Set "Rep=ПоказательТипа="

        mshta vbscript:execute("Set FSO = CreateObject(""Scripting.FileSystemObject"") : Set FF = FSO.OpenTextFile(""%FileIn%"", 1) : InTxt = FF.ReadAll : FF.Close : Set FF = FSO.OpenTextFile(""%FileIn%"", 2, True) : FF.Write Replace(InTxt, ""%Fin%"", ""%Rep%"") : FF.Close :close")
Pause
Exit /B

Чтобы не было никакой путаницы с кодировками, оба этих скрипта должны быть написаны в 1251 (Windows) кодировке.

Постскриптум: Обнаружил, что первый скрипт из приведенных (чистый CMD) Вам не годится из-за наличия в тексте служебных для CMD символов. Например: в 80 строке пропадает %. Какие еще извращения возможны- не берусь судить, поэтому наилучший вариант Скрипт.VBS
Код:

FileIn = "Z:\Где файл\11.txt"
Fin = "ПоказательТипа=0"
Rep = "ПоказательТипа="

Set FSO = CreateObject("Scripting.FileSystemObject")
Set FF = FSO.OpenTextFile(FileIn, 1)
InTxt = FF.ReadAll
FF.Close

Set FF = FSO.OpenTextFile(FileIn, 2, True)
FF.Write Replace(InTxt, Fin, Rep)
FF.Close


UncleD 18-07-2019 15:26 2880429

megaloman, спасибо, все сработало.
В итоге воспользовался вторым вариантом, то есть этим:
Код:

@Echo Off
cls
>nul Chcp 1251
        Set "FileIn=Z:\Где файл\11.txt"
        Set "Fin=ПоказательТипа=0"
        Set "Rep=ПоказательТипа="

        mshta vbscript:execute("Set FSO = CreateObject(""Scripting.FileSystemObject"") : Set FF = FSO.OpenTextFile(""%FileIn%"", 1) : InTxt = FF.ReadAll : FF.Close : Set FF = FSO.OpenTextFile(""%FileIn%"", 2, True) : FF.Write Replace(InTxt, ""%Fin%"", ""%Rep%"") : FF.Close :close")
Pause
Exit /B

Единственно убрал Pause, чтобы скрипт не ждал эникея и еще /B, ведь если я правильно понял, то он нужен в случае, когда мой скрипт вызывал бы еще один или я что-то путаю?
Еще нашел в сети vbs, через который вызываю свой батник, а он прячет окно командной строки, ну просто чтобы не пугать пользователя регулярно выскакивающими непонятками, хотя решение и не очень элегантное.
Код:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "replace.bat" & Chr(34), 0
Set WshShell = Nothing

После отработки скрипта на всякий случай сравнил в Ворде исходный и итоговый файл, он других отличий кроме отсутствующего нуля он не нашел.
Еще раз благодарю.

megaloman 18-07-2019 15:35 2880432

UncleD, нормальные герои всегда идут в обход? :lol: Почему сразу не запускать vbs-вариант? СкрипачБатник не нужен. Или Вы что-то не договариваете? Например, надо в скрипт имя файла передавать?

UncleD 19-07-2019 08:01 2880523

Цитата:

Цитата megaloman
Например, надо в скрипт имя файла передавать? »

Ага, жуть как стесняюсь признаться что ничерта в этом не понимаю и не знаю как это в один скрипт объединить)

UncleD 19-07-2019 12:24 2880561

Цитата:

Цитата megaloman
Вас надо уговаривать, или сами подробно расскажите задачу? Что надо сделать? »

Уговорили). Есть Бухгалтер работающий с интернет клиентом банка, ему нужно туда выгружать платежки из 1С, она в свою очередь выгружает их в текстовый файл, часть которого я скидывал раньше. После перехода с обычного установленного банк-клиента на онлайн версию, часть платежек начала отклоняться. Как выяснилось, причина в этой строке, той что "ПоказательТипа=0" в новых версиях нет и не должно быть "0". Лезть в конфу 1С без малейшего понимания, чтобы исправить формат выводимого файла там, нет никакого желания, так что решил пойти более менее понятным мне путем с батником в планировщике, который будет с некоторой периодичностью заменять эту строку в уже выгруженном файле, чтобы бух потм мог спокойно скормить его банку. Если закинуть батник в планировщик как есть, то при его выполнении на экране выскакивает черное окно консоли, согласитесь некрасиво, вот потому и искал способ это окно убрать, нашел и применил в меру своих познаний.

megaloman 19-07-2019 13:55 2880574

UncleD, откуда берётся имя файла? И в чём затруднение вставить vbs скрипт в планировщик, вроде Вы это можете?
Вот доработка vbs-скрипта c целью исключения перезаписи входного файла в случае, если строка для замены не найдена (то есть, на практике, ранее эта замена уже планировщиком была сделана)
Код:

FileIn = "Z:\Где файл\11.txt"
Fin = "ПоказательТипа=0"
Rep = "ПоказательТипа="

Set FSO = CreateObject("Scripting.FileSystemObject")
Set FF = FSO.OpenTextFile(FileIn, 1)
InTxt = FF.ReadAll
FF.Close

If InStr(1, InTxt, Fin) <> 0 Then
    Set FF = FSO.OpenTextFile(FileIn, 2, True)
    FF.Write Replace(InTxt, Fin, Rep)
    FF.Close
End If


UncleD 19-07-2019 15:22 2880590

Цитата:

Цитата megaloman
откуда берётся имя файла? »

Имя файла постоянное и в реальности такое "1c_to_kl.txt".
Цитата:

Цитата megaloman
И в чём затруднение вставить vbs скрипт в планировщик, вроде Вы это можете? »

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

megaloman 19-07-2019 15:27 2880592

Цитата:

Цитата UncleD
Скрипт скрывающий окно командной строки нормально вставляется. »

Еще нормальнее вставляется vbs-скрипт с решением вашей задачи и никаких окон не выскочит.
У Вас: vbs-скрипт скрывает батник, который вызывает VBS-скрипт. Тихо шифером шурша ....
Посмотрите предыдущий пост, я немного изменил скрипт.
А еще нормальнее, разобраться с формированием файла, чтобы его не корректировать.

SharkyEXE 09-08-2023 15:22 3013656

megaloman, здравствуйте

Пожалуйста, помогите ДОработать Ваш отличный скрипт
http://forum.oszone.net/post-2880574-20.html

Код:

FileIn = "Z:\Где файл\11.txt"
Fin = "ПоказательТипа=0"
Rep = "ПоказательТипа="

Set FSO = CreateObject("Scripting.FileSystemObject")
Set FF = FSO.OpenTextFile(FileIn, 1)
InTxt = FF.ReadAll
FF.Close

If InStr(1, InTxt, Fin) <> 0 Then
    Set FF = FSO.OpenTextFile(FileIn, 2, True)
    FF.Write Replace(InTxt, Fin, Rep)
    FF.Close
End If

Момент №1

На входе, лично в моем случае, может быть
ПоказательТипа=0
ПоказательТипа=1
ПоказательТипа=3
ПоказательТипа=4
ПоказательТипа=5
...
то есть после равно может быть любая цифра, хоть 0, хоть 987654321

Как сделать по умному, чтобы на выходе было
ПоказательТипа=2

Момент №2

В файле
FileIn = "Z:\Где файл\11.txt"
параметр
ПоказательТипа=2
может быть в двух местах

Код:

...
[messageWindow]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3\xab\0\0\0\x9e\0\0\x5\xdd\0\0\x3I\0\0\x3\xb3\0\0\0\xbc\0\0\x5\xd5\0\0\x3\x41\0\0\0\0\0\0\0\0\a\x80\0\0\x3\xb3\0\0\0\xbc\0\0\x5\xd5\0\0\x3\x41)
ПоказательТипа=0
wordWarp=true
...
[mediaInfo]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x1\x31\0\0\0w\0\0\x2\xc8\0\0\x2\x9f\0\0\x1\x35\0\0\0\x8e\0\0\x2\xc4\0\0\x2\x9b\0\0\0\0\0\0\0\0\x5\0\0\0\x1\x35\0\0\0\x8e\0\0\x2\xc4\0\0\x2\x9b)
ПоказательТипа=1
aceSplitterSettings=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\xcd\0\0\x1*\x1\xff\xff\xff\xff\x1\0\0\0\x2\0)
showTimestamp=true

Возможно или нет сделать так, чтобы менялось ТОЛЬКО во 2м случае, в секции [mediaInfo]

А секцию [messageWindow] НЕ трогать

megaloman 09-08-2023 17:47 3013682

Код:

FileIn = "Z:\Где файл\1c_to_kl.txt"
Section = Array("mediaInfo")
Fin = "ПоказательТипа=\d* *"
Rep = "ПоказательТипа=2"

Set R = CreateObject("VBScript.RegExp")
With R
    .Global = True
    .Pattern = Fin
    .IgnoreCase = True
End With

With CreateObject("Scripting.FileSystemObject")
    With .OpenTextFile(FileIn, 1)
        InTxt = Split(.ReadAll, "[")
        .Close
    End With
   
    For i = 0 To UBound(InTxt)
        For Each s In Section
            If InStr(1, InTxt(i), s + "]", 1) = 1 Then
                InTxt(i) = R.Replace(InTxt(i), Rep)
                Exit For
            End If
        Next
    Next
   
    With .OpenTextFile(FileIn, 2, True)
        .Write Join(InTxt, "[")
        .Close
    End With

End With


SharkyEXE 09-08-2023 21:11 3013700

megaloman

Здравствуйте

Отлично, класс..

Но возникла бяка - каждый раз при запуске скрипта файл сохраняется заново, даже если в секции [mediaInfo], ПоказательТипа=2

Можете, пожалуйста, сделать как здесь
http://forum.oszone.net/post-2880574-20.html

Вот доработка vbs-скрипта c целью исключения перезаписи входного файла в случае, если строка для замены не найдена (то есть, на практике, ранее эта замена уже планировщиком была сделана)

Если по проще:
если в файле, в секции [mediaInfo], ПоказательТипа=2 - то ничего НЕ делать, не сохранять файл, просто закрыть файл
если в файле, в секции [mediaInfo], ПоказательТипа= НЕ РАВНО 2 - то делать замену и сохранять файл

megaloman 09-08-2023 21:48 3013701

Код:

FileIn = "Z:\Где файл\1c_to_kl.txt"
Section = Array("mediaInfo")
Fin = "ПоказательТипа=\d*"
Rep = "ПоказательТипа=2"

Set R = CreateObject("VBScript.RegExp")
With R
    .Global = True
    .Pattern = Fin
    .IgnoreCase = True
End With

With CreateObject("Scripting.FileSystemObject")
    With .OpenTextFile(FileIn, 1)
        InTxt = Split(.ReadAll, "[")
        .Close
    End With
   
    L = False
    For i = 0 To UBound(InTxt)
        For Each s In Section
            If InStr(1, InTxt(i), s + "]", 1) = 1 Then
                InTxt0 = InTxt(i)
                InTxt(i) = R.Replace(InTxt(i), Rep)
                L = L Or InTxt0 <> InTxt(i)
                Exit For
            End If
        Next
    Next
   
    If L Then
        With .OpenTextFile(FileIn, 2, True)
            .Write Join(InTxt, "[")
            .Close
        End With
        MsgBox FileIn + vbCr + "был изменен"
    End If
End With

Я смутно представляю задачу, поэтому предполагаю, что секций, где надо менять данные, несколько (имена задаются в массиве Section), а также в каждой секции ПоказательТипа может встречаться не один раз.

SharkyEXE 09-08-2023 21:56 3013702

megaloman

Здравствуйте

1) Класс, отлично

Теперь запустил один раз Ваш скрипт - в файле, в секции [mediaInfo], было ПоказательТипа=0, стало ПоказательТипа=2
Появилась табличка "был изменен"

Потом сколько раз я НЕ запускал Ваш скрипт - файл НЕ записывался и НЕ сохранялся заново

Мини пожелание - а нельзя добавить табличку "НЕ был изменен"?

Типа, потом, сколько раз я не буду запускать Ваш скрипт - я каждый раз буду видеть табличку "НЕ был изменен"

2) Цитата:
Я неточно представляю задачу, поэтому предполагаю, что секций, где надо менять данные, несколько (имена задаются в массиве Section), а также в каждой секции ПоказательТипа может встречаться не один раз.

Приношу Вам мои извинения, пусть будет так, для меня работает и работает

А так, повторюсь: есть файл, в файле 52 секции
Код:

...
[messageWindow]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3\xab\0\0\0\x9e\0\0\x5\xdd\0\0\x3I\0\0\x3\xb3\0\0\0\xbc\0\0\x5\xd5\0\0\x3\x41\0\0\0\0\0\0\0\0\a\x80\0\0\x3\xb3\0\0\0\xbc\0\0\x5\xd5\0\0\x3\x41)
ПоказательТипа=0
wordWarp=true
...
[mediaInfo]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x1\x31\0\0\0w\0\0\x2\xc8\0\0\x2\x9f\0\0\x1\x35\0\0\0\x8e\0\0\x2\xc4\0\0\x2\x9b\0\0\0\0\0\0\0\0\x5\0\0\0\x1\x35\0\0\0\x8e\0\0\x2\xc4\0\0\x2\x9b)
ПоказательТипа=1
aceSplitterSettings=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\xcd\0\0\x1*\x1\xff\xff\xff\xff\x1\0\0\0\x2\0)
showTimestamp=true
...

То есть параметр
Код:

ПоказательТипа={тут всякие цифры}
может быть только
1) 1на строка в секции [messageWindow]
2) 1на строка в секции [mediaInfo]
Больше в файле в остальных 50 секциях параметра
Код:

ПоказательТипа={тут всякие цифры}
нигде нету

megaloman 09-08-2023 22:52 3013706

Msgbox я оставил случайно, для отладки. для планировщика это не годится. Как вариант
Код:

FileIn = "Z:\Где файл\1c_to_kl.txt"
Section = Array("mediaInfo")
Fin = "ПоказательТипа=\d*"
Rep = "ПоказательТипа=2"

Set R = CreateObject("VBScript.RegExp")
With R
    .Global = True
    .Pattern = Fin
    .IgnoreCase = True
End With

With CreateObject("Scripting.FileSystemObject")
    With .OpenTextFile(FileIn, 1)
        InTxt = Split(.ReadAll, "[")
        .Close
    End With
   
    L = False
    For i = 0 To UBound(InTxt)
        For Each s In Section
            If InStr(1, InTxt(i), s + "]", 1) = 1 Then
                InTxt0 = InTxt(i)
                InTxt(i) = R.Replace(InTxt(i), Rep)
                L = L Or InTxt0 <> InTxt(i)
                Exit For
            End If
        Next
    Next
   
    Out = FileIn + vbCr + "не изменялся"
    If L Then
        With .OpenTextFile(FileIn, 2, True)
            .Write Join(InTxt, "[")
            .Close
        End With
        Out = FileIn + vbCr + "был изменен"
    End If
    ''''''''MsgBox Out
    CreateObject("WScript.Shell").Run "Msg.exe" + " * " + CStr(Now()) + vbCr + Out, 0, False
End With


SharkyEXE 09-08-2023 23:15 3013707

megaloman

Здравствуйте

Пожалуйста, будьте так, любезны, научите, а как увидеть выхлоп Вашего скрипта?

Мол, когда изменился - увидеть строку, окно "был изменен"

Мол, когда изменений нет - увидеть строку, окно "не изменялся"

Банальный запуск vbs скрипта - ничего не появляется, ни "был изменен", ни "не изменялся"

megaloman 09-08-2023 23:37 3013708

SharkyEXE, У меня работает. Но я запускаю скрипт без планировщика от своего имени. Возможно, сто лет тому назад я делал какие-то настройки.
Попробуйте почитать.. Попробуйте вместо
" * "
написать " имяпользователя "
имяпользователя можно увидеть, запустив в командном окне
Echo %Username%

SharkyEXE 09-08-2023 23:45 3013709

megaloman

Здравствуйте

Я многократно извиняюсь

1) Есть файл 1.vbs, внутри файла 1.vbs код отсюда http://forum.oszone.net/post-3013706-28.html
Код:

FileIn = "Z:\Где файл\1c_to_kl.txt"
Section = Array("mediaInfo")
Fin = "ПоказательТипа=\d*"
Rep = "ПоказательТипа=2"

Set R = CreateObject("VBScript.RegExp")
With R
    .Global = True
    .Pattern = Fin
    .IgnoreCase = True
End With

With CreateObject("Scripting.FileSystemObject")
    With .OpenTextFile(FileIn, 1)
        InTxt = Split(.ReadAll, "[")
        .Close
    End With
   
    L = False
    For i = 0 To UBound(InTxt)
        For Each s In Section
            If InStr(1, InTxt(i), s + "]", 1) = 1 Then
                InTxt0 = InTxt(i)
                InTxt(i) = R.Replace(InTxt(i), Rep)
                L = L Or InTxt0 <> InTxt(i)
                Exit For
            End If
        Next
    Next
   
    Out = FileIn + vbCr + "не изменялся"
    If L Then
        With .OpenTextFile(FileIn, 2, True)
            .Write Join(InTxt, "[")
            .Close
        End With
        Out = FileIn + vbCr + "был изменен"
    End If
    ''''''''MsgBox Out
    CreateObject("WScript.Shell").Run "Msg.exe" + " * " + CStr(Now()) + vbCr + Out, 0, False
End With

2) Я извиняюсь, но возможно или нет:
1) создать файл 1.cmd, внутри файла 1.cmd прописать команду
Код:

@Echo Off
1.vbs >> 1.txt
Pause
Exit

Так сказать, вывод в stdout
Так нормально или так не нормально?

megaloman 10-08-2023 07:18 3013710

Если нужен log-файл, все равно скрипач батник не нужен, измените скрипт
Код:

...........
...........
...........
    End If
    ''''''''MsgBox Out
    ''''''''CreateObject("WScript.Shell").Run "Msg.exe" + " * " + CStr(Now()) + vbCr + Out, 0, False

    With .OpenTextFile(FileIn + ".log", 8, True)
        .writeline CStr(Now()) + vbTab + Replace(Out, vbCr, vbTab)
        .Close
    End With

End With

Лог-файл создаётся рядом с исходным файлом. Его можно удалять, он пересоздастся.

Насчет выхлопа, попробуйте в командном окне исполнить команды

Msg * kuku
Msg %Username% kuku

Как насчет выхлопа?


Время: 02:23.

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