Имя: Пароль:
IT
Админ
Помогите написать скрипт создания файла xml.
0 Нооф-Нооф
 
21.09.14
12:23
Нужно генерировать файл xml подобного типа:
<?xml version="1.0" encoding="UTF-8"?>
<run modifyTime="20140921105050"/>

где "20140921105050" - текущая дата


нашел такой пример

<html>
<head>
<title>Создание фала</title>
<script>
function newf()
{
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.CreateTextFile("c:\\test.txt", true);
// Вставка строки с переносом на новую.
tf.WriteLine("Testing 1, 2, 3.") ;
// Вставка 3 путых строк.
tf.WriteBlankLines(3) ;
// Вставка новой строки, без переноса.
tf.Write ("This is a test.");
// Закрытие файла.
tf.Close();
}

</script>
</head>
<body>
Вы должны разрешить запуск данного скрипта<br><br>
Щелкните <a href="javascript:newf()">здесь</a>, чтобы создать файл c:\test.txt.<br><br>
</body>
</html>

открываю в браузере, нажимаю - ничего не происходит...

да и хотелось бы что-то типа файла vbs -  чтобы нажал - и файлик создался...
1 ДенисЧ
 
21.09.14
12:27
var fso, tf
fso = new ActiveXObject("Scripting.FileSystemObject")
tf = fso.CreateTextFile("c:\\test.txt", true)
// Вставка строки с переносом на новую.
tf.WriteLine("Testing 1, 2, 3.")
// Вставка 3 путых строк.
tf.WriteBlankLines(3)
// Вставка новой строки, без переноса.
tf.Write ("This is a test.")
// Закрытие файла.
tf.Close()

клацнул в проводнике - молча создался файл. ЧЯДНТ?

Да, я ему дал расширение js
2 Нооф-Нооф
 
21.09.14
12:31
(1) сделал файл js, скопировал текст из (1) - при выполнении ругается на строку 1, позицию 8 - ожидается ";"
3 kokamoonga
 
21.09.14
12:46
(2) ты не поверишь...

(1) то, что отдельные интерпретаторы позволяют не ставить ";" в конце строк, еще не повод для подобного написания.
4 Нооф-Нооф
 
21.09.14
12:48
(3) понял к чему ты. но такой вариант выдает ту же ошибку

var fso;
var tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.CreateTextFile("c:\\test.txt", true);
// Вставка строки с переносом на новую.
tf.WriteLine("Testing 1, 2, 3.");
// Вставка 3 путых строк.
tf.WriteBlankLines(3);
// Вставка новой строки, без переноса.
tf.Write ("This is a test.");
// Закрытие файла.
tf.Close();
5 kokamoonga
 
21.09.14
12:56
(4) что-то ты не договариваешь
6 Нооф-Нооф
 
21.09.14
13:14
(5) скопировал текст из своего js
7 spectre1978
 
21.09.14
13:17
(0) На жабаскрипте нет, есть на VBS. Ну, если захочешь - адаптируешь:

[CODE]

Sub SetAttr (Node, Name, Value)

        if not IsNull (Value) then
        Node.setAttribute Name, Value
    end if

End Sub

...

Set xmlDoc = CreateObject ("MSXML2.DomDocument")

MainNode = "<?xml version=""1.0"" encoding=""windows-1251"" standalone=""yes"" ?> <XML> </XML>"
xmlDoc.loadXML MainNode
...
Set nContractor = xmlDoc.documentElement.appendChild _
            (xmlDoc.createElement("Контрагент"))

setAttr nContractor, "Наименование", rs.Fields.Item ("SHORTNAME").Value
setAttr nContractor, "ПолнНаименование", rs.Fields.Item ("FULLNAME").Value
setAttr nContractor, "ИНН", rs.Fields.Item ("INN").Value
...

xmlDoc.save "Conts.XML"

[/CODE]
8 Нооф-Нооф
 
21.09.14
13:20
(7) хм... чувствую "как есть" этот файл использовать нельзя и нужно менять под свою ситуацию? а можно готовый пример попроще? допустим с созданием одной строки в этом хмл?
9 spectre1978
 
21.09.14
13:22
Ща
10 spectre1978
 
21.09.14
13:28
Set xmlDoc = CreateObject ("MSXML2.DomDocument")

MainNode = "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes"" ?> <XML> </XML>"
xmlDoc.loadXML MainNode

Set nContractor = xmlDoc.documentElement.appendChild (xmlDoc.createElement("Узел"))
nContractor.setAttribute "Атрибут1", "ЗначениеАтрибута1"

xmlDoc.save "TestFile.XML"

Если вот это дело сохранить как 1.vbs и запустить, то в том же каталоге создастся файл TestFile.XML вот такого вида:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XML>
    <Узел Атрибут1="ЗначениеАтрибута1"/>
</XML>
11 Нооф-Нооф
 
21.09.14
13:32
создал файл *.vbs, запихнул в него через блокнот следуюищй тект:

Set xmlDoc = CreateObject ("MSXML2.DomDocument")

MainNode = "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes"" ?> <XML> </XML>"
xmlDoc.loadXML MainNode

Set nContractor = xmlDoc.documentElement.appendChild (xmlDoc.createElement("Узел"))
nContractor.setAttribute "Атрибут1", "ЗначениеАтрибута1"

xmlDoc.save "TestFile.XML"



при запуске ругается на 1,1 - invalid character

похоже туплю жестко...
12 spectre1978
 
21.09.14
13:38
(11) сочувствую, но делаю ровно то же - и у меня не ругается.
Правда я не создавал файл, а запустил пустой блокнот, скопировал туда текст и сохранил файл как 1.vbs, тип "Текстовые файлы".
13 kokamoonga
 
21.09.14
13:56
(6) скопировал текст отсюда, запустил, все работает как должно. XP в виртуалке если чо.
14 Лефмихалыч
 
21.09.14
14:07
Set xmlDoc = CreateObject("Microsoft.XMLDOM")  
  
Set objRoot =  xmlDoc.createElement("run")  
objRoot.setAttribute("modifyTime", "20140921105050");
xmlDoc.appendChild objRoot
15 ДенисЧ
 
21.09.14
14:07
(2) C:\>del *.js

C:\>del tes*.*

C:\>dir test.txt
Том в устройстве C не имеет метки.
Серийный номер тома: 24A6-40AF

Содержимое папки C:\

Файл не найден

C:\>copy con 22.js
var fso, tf
fso = new ActiveXObject("Scripting.FileSystemObject")
tf = fso.CreateTextFile("c:\\test.txt", true)
// Вставка строки с переносом на новую.
tf.WriteLine("Testing 1, 2, 3.")
// Вставка 3 путых строк.
tf.WriteBlankLines(3)
// Вставка новой строки, без переноса.
tf.Write ("This is a test.")
// Закрытие файла.
tf.Close()
^Z
Скопировано файлов:         1.

C:\>start 22.js

C:\>dir test.txt
Том в устройстве C не имеет метки.
Серийный номер тома: 24A6-40AF

Содержимое папки C:\

21.09.2014  14:07                39 test.txt
               1 файлов             39 байт
               0 папок  66 697 248 768 байт свободно

C:\>type test.txt
Testing 1, 2, 3.



This is a test.
C:\>ver

Microsoft Windows [Version 6.1.7601]

C:\>
16 Нооф-Нооф
 
21.09.14
14:56
бьюсь головой о стену...

файл 22.js, содержание:
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.CreateTextFile("c:\skyppe\test.txt", true);
tf.WriteLine("Testing 1, 2, 3.")
tf.WriteBlankLines(3)
tf.Write ("This is a test.")
tf.Close()


при запуске - строка3, позиция 1 - bad file name or number
17 kokamoonga
 
21.09.14
14:59
(16) слеши экранируй

skyppe это не ошибка?
18 Нооф-Нооф
 
21.09.14
15:02
пробовал c:\skyppe\test.txt, c:\\skyppe\test.txt, c:/skyppe/test.txt, c://skyppe/test.txt

skyppe - да, так папка называется
19 User_Agronom
 
21.09.14
15:03
(15) C:\>copy con 22.js
Конгениально. Неужели Windows не имеет с своём составе приемлемого нормального примитивного текстового редактора?
20 ДенисЧ
 
21.09.14
15:06
(19) а зачем париться, если мне нужно было показать полный лог действий?
21 Нооф-Нооф
 
21.09.14
15:06
мда...
стремно чувствовать себя неучем в элементарных вопросах...
22 Нооф-Нооф
 
21.09.14
16:32
кому интересно, в итоге победил таким батником...

@echo off
echo ^<?xml version="1.0" encoding="UTF-8"?^> > test.xml

set D=%DATE%
set T=%TIME%
set DT=%D:~6,4%%D:~3,2%%D:~0,2%%T:~0,2%%T:~3,2%%T:~6,2%

echo ^<run modifyTime="%DT%"/^> >>test.xml

copy test.xml C:\
23 kokamoonga
 
21.09.14
17:15
(18) >>> c:\\skyppe\test.txt  

Слеши во множественном числе.
24 ivanov-i-i
 
21.09.14
17:25