Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Скрипт vbs не могу настроить

Ответить
Настройки темы
VBS/WSH/JS - [решено] Скрипт vbs не могу настроить

Новый участник


Сообщения: 38
Благодарности: 0

Профиль | Отправить PM | Цитировать


Форумчане, здравствуйте!
Подскажите, пожалуйста, что делаю не так.
Сама задача: при появлении нового файла (в данном случае TOVAR.txt, по сути это обычный txt со структурой csv), необходимо запустить обработку, которая заменит часть значений в файле.
Пытаюсь состряпать хоть что то, но вообще никуда не идёт, он просто висит в задачах, но не исполняется.
Сам скрипт и файл, который появляется при загрузке.
TOVAR.txt
Код: Выделить весь код
Option Explicit: Dim FDir, File, FSO, SINK
FDir = Left(WSH.ScriptFullName, InStrRev(WSH.ScriptFullName, "\"))
File = FDir & "\\server_kass\Obmen\Spr\temp_not_delete\TOVAR.txt"
Set  FSO = CreateObject("Scripting.FileSystemObject")
Set SINK = WSH.CreateObject("WbemScripting.SWbemSink", "SINK_")
GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")._
ExecNotificationQueryAsync SINK, "SELECT * FROM __InstanceCreationEvent" &_
" WITHIN 1 WHERE Targetinstance ISA 'CIM_DataFile' And" &_
" TargetInstance.Name='" & Replace(File, "\", "\\") & "'"
Do: WSH.Sleep 8^10 :Loop
 
Sub SINK_OnObjectReady(o,x)
  Dim ff, pp, ss, aa
  Set ff = FSO.CreateTextFile("\\server_kass\Obmen\Spr\temp_not_delete\TOVAR_2.txt", 1)
  Set pp = FSO.OpenTextFile(FDir & "TOVAR.txt")
  Do: ss = pp.ReadLine
    If Left(ss, 3) = "" Then
      aa = Split(ss, ";")
       If aa(59) = "2" Then
        aa(8) = aa(8) & " | КОНТРОЛЬ"
        aa(9) = Right("0" & Year(Date), 2) & "" &_
        Right("0" & Month(Date), 2) & "" & Day(Year(Date), 3)
      End If      
End If
    ff.WriteLine ss
  Loop Until pp.AtEndOfStream: ff.Close: pp.Close
  FSO.DeleteFile File, 1
End Sub

Отправлено: 09:41, 23-05-2022

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Опишите, что нужно заменить.
Также желательно знать имена заголовков в CSV, чтобы знать, где что менять. В Powershell работать с CSV не проблема, но гораздо удобнее, когда колонки названы по-человечески:
Код: Выделить весь код
Convertfrom-Csv (gc "C:\temp\TOVAR.txt" |select -Skip 4) -Delimiter ';' -Header (1..60) |select -First 5 |ft

1 2             3      4 5     6             7     8                                                 
- -             -      - -     -             -     -                                                 
  4603728127019 108983 1 00001 4603728127019 00022 5 дней от пота и запаха 1,5г №10 пак Посейдон ООО 
  4603728127019 109009 1 00001 4603728127019 00023 5 дней от пота и запаха 1,5г №10 пак Посейдон ООО 
  4602193010086 98785  1 00001 4602193010086 00079 9 месяцев Фолиевая кислота 0,4мг №30 таб.п.о Ва...
  3800163710160 108635 1 00001 3800163710160 00001 Alenmak крем для рук с миндальным маслом питате...
  8590232000050 94470  1 00001 8590232000050 00026 Colgate Классика здоровья з/щетка средняя Колге...

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 23-05-2022 в 21:18.


Отправлено: 20:59, 23-05-2022 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 38
Благодарности: 0

Профиль | Отправить PM | Цитировать


Надо в столбце 24 заменить срок на текущий при наличии цифры "2" в поле 59. Причём там всё так хитро сделано, срок сделан не по-человечески 20250301
И всё, контроль слово отпало само по себе, оно лишнее.
С поуэршелл я вообще не в ладах, я то vbs пытаюсь освоить методом ненаучного тыка.

Отправлено: 07:26, 24-05-2022 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Powershell:
Код: Выделить весь код
$path = "C:\temp\TOVAR.txt"

# Если файл есть
if (Test-Path "$path") {
$t = get-date
$bestBefore = $t.ToString("yyyyMMdd")
$fileMark = $t.ToString("yyyyMMddhhmmss")
    # Импорт
    $csv = Convertfrom-Csv (gc "$path" |select -Skip 4) -Delimiter ';' -Header (1..60)
    # Замена по условию
    $csv |% {
        if ($_.59 -eq 2) {
            $_.24 = $bestBefore
        }
    }
    $inFile = Get-Item "$path"
    # Экспорт готового CSV
    $csv |Export-Csv -Path "$($inFile.DirectoryName)\$fileMark-$($inFile.BaseName).csv" -Delimiter ';' -NoTypeInformation -Encoding default
    # Если экспорт успешен, переименовать оригинал
    if ($?) {mv "$path" "$($inFile.DirectoryName)\$fileMark-$($inFile.Name)"}
}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:12, 24-05-2022 | #4


Новый участник


Сообщения: 38
Благодарности: 0

Профиль | Отправить PM | Цитировать


Буду потитхонечку с ним разбираться)))
Спасибо))))
Попробую настроить всё таки экспорт в txt и заданную папку, и установить в заданиях постоянную работу, где то читал, что такое можно осуществить, он будет висеть и ожидать появления нового файла.

Отправлено: 11:06, 24-05-2022 | #5


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


В задании это делать не нужно, т. к. есть планировщик задач, который может запускать скрипт хоть каждую минуту. Это надёжнее, чем висящий процесс.

Для txt можно просто поменять расширение на .txt в строке экспорта.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:09, 24-05-2022 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Скрипт vbs не могу настроить

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Можно ли переписать этот vbs скрипт в бат скрипт ufooo000 Скриптовые языки администрирования Windows 1 07-02-2017 08:52
CMD/BAT - [решено] Можно ли этот (.vbs) скрипт интегрировать в (.bat) скрипт? ufooo000 Скриптовые языки администрирования Windows 6 01-01-2017 10:23
VBS/WSH/JS - Не корректно работает VBS-скрипт NoBrain Скриптовые языки администрирования Windows 3 11-02-2014 16:05
VBS/WSH/JS - Скрипт VBS не работает в Win7 x64 BigBoo Скриптовые языки администрирования Windows 1 19-09-2012 13:37




 
Переход