Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
83 / 28 / 7
Регистрация: 26.02.2016
Сообщений: 294
1

Не могу записать в файл

19.07.2016, 13:10. Показов 2009. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.

Хочу стандартными средствами винды осуществлять запись строк в файл (vbs скриптом).
Но синтаксис языка не знаю, поэтому столкнулся с проблемой сразу же на ровном месте.
Visual Basic
1
2
3
4
5
Dim fso, tf
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.OpenTextFile("E:\komyshev_files\Desktop\Скрипты для аудита\test.txt", 2, True, 1)
tf.WriteLine "test_ok"
tf.close
Вроде всё с образцов интернета взято. Но не работает. Возникает ошибка "Недопустимый вызов или аргумент процедуры".
Подскажите, что неправильно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.07.2016, 13:10
Ответы с готовыми решениями:

Не могу записать в файл на windows, а на linux могу
Я не понимаю почему на windows не могу записать в файл данные...

Не могу записать файл
unauthorizedexception. Запускаю студию от имени администратора со всеми правами

Не могу записать в файл
написал программу, числа из одного файла записывать в другой . Вчера работала а седня не работает ....

Не могу записать в файл
Доброго времени суток. Не могу осуществить запись в текстовый файл. Ошибок никаких не выдаёт, но...

21
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 393
19.07.2016, 13:21 2
https://msdn.microsoft.com/en-... s(v=vs.84)
0
Заблокирован
19.07.2016, 13:26 3
Цитата Сообщение от jkom-18rus Посмотреть сообщение
Set tf = fso.OpenTextFile("E:\komyshev_files\Desktop\Скрипты для аудита\test.txt", 2, True, 1)
-недопустимое значение четвертого параметра: д.б. -1 или 0 или -2.
object.OpenTextFile(filename[, iomode[, create[, format]]])
Arguments
object
Required. Object is always the name of a FileSystemObject.
filename
Required. String expression that identifies the file to open.
iomode
Optional. Can be one of three constants: ForReading, ForWriting, or ForAppending.
create
Optional. Boolean value that indicates whether a new file can be created if the specified filename doesn't exist. The value is True if a new file is created, False if it isn't created. If omitted, a new file isn't created.
format
Optional. One of three Tristate values used to indicate the format of the opened file (TristateTrue = -1 to open the file as Unicode, TristateFalse = 0 to open the file as ASCII, TristateUseDefault = -2 to open the file as the system default). If omitted, the file is opened as ASCII.
1
83 / 28 / 7
Регистрация: 26.02.2016
Сообщений: 294
19.07.2016, 13:42  [ТС] 4
Shersh, спасибо, Ваш совет помог.

Заметил странность, раньше я последний параметр не использовал (было прописано всего 3). Но ошибка была.

После изменил "E:\komyshev_files\Desktop\Скрипты для аудита\test.txt", ForWriting, True" на "E:\komyshev_files\Desktop\Скрипты для аудита\test.txt", 2, True, 1"

Подскажите, 2 параметр (открытие файла для записи) как "ForWriting" указывать правильно? Что означает цифра "2"?
0
Заблокирован
19.07.2016, 13:51 5
CRIDEL дал ссылку - трудно дочитать?
The iomode argument can have any of the following settings:
Constant Value Description
ForReading 1 Open a file for reading only. You can't write to this file.
ForWriting 2 Open a file for writing.
ForAppending 8 Open a file and write to the end of the file.
0
83 / 28 / 7
Регистрация: 26.02.2016
Сообщений: 294
19.07.2016, 14:02  [ТС] 6
Возможно не правильно выразился.

Вопрос в следующем, можно ли вместо цифры написать слово?

Ещё подскажите пожалуйста, в чём разница методов ForAppending и ForWriting
0
Заблокирован
19.07.2016, 14:07 7
Цитата Сообщение от jkom-18rus Посмотреть сообщение
можно ли вместо цифры написать слово?
Можно, если опишите в vbs-файле
Visual Basic
1
Const ForReading = 1, ForWriting = 2, ForAppending = 8
иначе вряд ли...
1
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 393
19.07.2016, 14:10 8
Читай код.
Миниатюры
Не могу записать в файл  
0
83 / 28 / 7
Регистрация: 26.02.2016
Сообщений: 294
19.07.2016, 14:13  [ТС] 9
CRIDEL, разные примеры у нас с Вами.
А я код по частям собирал из этой статьи

Цитата Сообщение от jkom-18rus Посмотреть сообщение
Ещё подскажите пожалуйста, в чём разница методов ForAppending и ForWriting
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 393
19.07.2016, 14:17 10
Знакомые речи...

Добавлено через 1 минуту
Цитата Сообщение от jkom-18rus Посмотреть сообщение
Ещё подскажите пожалуйста, в чём разница методов ForAppending и ForWriting
ForAppending - добавление строки в конец файла
ForWriting - добавление строки в любое место файла
0
Заблокирован
19.07.2016, 14:21 11
Цитата Сообщение от CRIDEL Посмотреть сообщение
ForWriting - добавление строки в любое место файла
Это вряд ли - происходит создание нового файла для записи с нулевой позиции.
1
83 / 28 / 7
Регистрация: 26.02.2016
Сообщений: 294
19.07.2016, 14:24  [ТС] 12
Цитата Сообщение от Shersh Посмотреть сообщение
происходит создание нового файла для записи с нулевой позиции.
Если файл есть, тогда что?

Мне какой метод использовать для записи в конец существующего файла?
0
Заблокирован
19.07.2016, 14:26 13
Цитата Сообщение от jkom-18rus Посмотреть сообщение
Мне какой метод использовать для записи в конец существующего файла?
Цитата Сообщение от CRIDEL Посмотреть сообщение
ForAppending - добавление строки в конец файла
...
1
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 393
19.07.2016, 14:28 14
Shersh, не обязательно создание, но с нулевой позиции - эт верно, дальнейшее перемещение по файлу - ручками, так как мы работаем не с файлом, а с объектом TextStream.
1
83 / 28 / 7
Регистрация: 26.02.2016
Сообщений: 294
21.07.2016, 08:01  [ТС] 15
С записью всё получилось. Всем спасибо за помощь.

Чтобы не создавать новую тему, пишу в этой же.

Появилась новая проблема.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
strComputer = "."
 
    Dim fso, tf
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set tf = fso.OpenTextFile("C:\Users\User\Desktop\Скрипты аудит\test.txt", 8, True)
 
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate, (Security)}!\" & _
        strComputer & "\root\cimv2")
 
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _    
    ("Select * from __instancecreationevent where " _
        & "TargetInstance isa 'Win32_NTLogEvent' " _
            & "and TargetInstance.EventCode = '4801' ")
 
Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
     strAlertToSend = objLatestEvent.TargetInstance.User _ 
         & " attempted to access DatabaseServer."
    tf.WriteLine "4801"
    tf.close
Loop
 
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate, (Security)}!\" & _
        strComputer & "\root\cimv2")
 
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _    
    ("Select * from __instancecreationevent where " _
        & "TargetInstance isa 'Win32_NTLogEvent' " _
            & "and TargetInstance.EventCode = '4800' ")
 
Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
     strAlertToSend = objLatestEvent.TargetInstance.User _ 
         & " attempted to access DatabaseServer."
    Set tf = fso.OpenTextFile("C:\Users\User\Desktop\Скрипты аудит\test.txt", 8, True)
    tf.WriteLine "4800"
    tf.close
Loop
Данный код никак не хочет записывать событие 4800. Такое ощущение, что где-то после записи события 4801 скрипт завершает свою работу.
Подскажите пожалуйста, как отслеживать появление нескольких событий, и записывать их все?
0
Заблокирован
21.07.2016, 08:20 16
jkom-18rus,
1 - Вы выбрали не тот раздел для своих вопросов, проситесь сюда.
2 - цикл DO ... LOOP должен иметь в своем теле выход типа IF условие THEN EXIT DO
0
83 / 28 / 7
Регистрация: 26.02.2016
Сообщений: 294
21.07.2016, 13:00  [ТС] 17
Shersh, как я писал в самом начале:
Цитата Сообщение от jkom-18rus Посмотреть сообщение
синтаксис языка не знаю
Поэтому мне не совсем понятна логика использования в данном случае цикла в принципе.

Но, если условия нет, по идее должно происходить зацикливание. Хотя отрабатывается всё нормально - одно событие=одна запись.

Не работает с несколькими событиями.

з.ы. Тему создал в той ветке. Ощущение, что там никого нет. За полдня ни одного ответа. Поэтому спрашиваю здесь.
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 393
21.07.2016, 17:14 18
w
Цитата Сообщение от Shersh Посмотреть сообщение
2 - цикл DO ... LOOP должен иметь в своем теле выход типа IF условие THEN EXIT DO
- в противном случае код не выйдет за пределы первого цикла, поэтому и не записывает - до туда код просто не доходит. Тебе нужно в тело цикла добавить DoEvents перед LOOP, если уж так хочется циклами ловить.
0
Заблокирован
21.07.2016, 22:59 19
Цитата Сообщение от CRIDEL Посмотреть сообщение
DoEvents
В VBS нет
Код
DoEvents
. Можно так:
Код
Wscript.Sleep (1000)
1
83 / 28 / 7
Регистрация: 26.02.2016
Сообщений: 294
22.07.2016, 07:17  [ТС] 20
Цитата Сообщение от CRIDEL Посмотреть сообщение
если уж так хочется циклами ловить.
Мне не принципиально цикл там или не цикл. Я вообще не понимаю, зачем для записи ОДИН РАЗ использовать цикл. Но какой пример нашёл, такой и использовал.
Есть подозрение, что цикл здесь для того, чтобы скрипт работал в фоне и не завершался после одного срабатывания. Мне это нужно (постоянная работа, отслеживание и запись)

Можно это реализовать попроще?
0
22.07.2016, 07:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.07.2016, 07:17
Помогаю со студенческими работами здесь

Не могу создать и записать файл
Areostar Member Откуда: Сообщений: 2004 создал несколько папок ...

Не могу записать числа в файл
Не получается записать числа в файл (god,price). При открытии файла заместо чисел какие то символы....

Не могу записать в нетипизированный файл
Добрый вечер! Пытаюсь записать в нетипизированный файл, и получаю ошибку Uknown Run-Time...

Не могу записать результат в файл
в 37 строке ругается на ofstream пишет неизвестная функция #include "stdafx.h" #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru