Я сделал это htm, работая с vbs, но я ввожу что-то в testbox по строкам, он выводит все в текстовый файл в одну строку.... Как я могу сделать вывод строки за строкой так же, как строки, введенные в текстовое поле?
Другой вопрос заключается в том, что можно использовать только одну кнопку для "вывода" и "запускать пакет", вместо этого дважды щелкая?
Вот мой код, за исключением файла htm
:
<html>
<head>
<title>Release To Production Files Sync To Mexico</title>
</head>
<script language="vbscript">
Sub WriteTxt_OnClick()
Dim fso, txt
Set fso = CreateObject("Scripting.FileSystemObject")
Set txt = fso.CreateTextFile("C:\work\test.txt")
txt.WriteLine document.Submitted_Link_To_Mex.body.value
MsgBox "File Submitted",64,"Selection"
End Sub
Sub SYNC_onClick()
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "C:\work\test.bat", 0
' 0 => hide cmd
MsgBox("Success")
End Sub
</script>
<H2>Copy And Paste The Folder Path To Here </H2>
<body>
<form name="Submitted_Link_To_Mex">
<textarea name="body" cols="150" rows="20">
</textarea>
</form>
<br>
<input type="button" value="1. SUBMIT" name="WriteTxt">
<input type="Button" value="2. SYNC" name="SYNC">
</div>
</body>
</html>
Он записывает данные как одну строку, потому что вы заявляете, что программа записывает ее как одну строку. Да, когда кто-то нажимает "Enter" в текстовом поле, он разделяет строки компонентом новой строки или vbscript "vbcrlf".
Чтобы исправить это, вы можете пройти два маршрута.
Просто напишите весь контент непосредственно в блоке записи:
Sub WriteTxt_OnClick()
Dim fso, txt
Set fso = CreateObject("Scripting.FileSystemObject")
Set txt = fso.CreateTextFile("C:\work\test.txt")
txt.Write document.Submitted_Link_To_Mex.body.value
MsgBox "File Submitted",64,"Selection"
End Sub
Ключ здесь: ".Write" вместо.WriteLine
Или
Вы можете проверить содержимое и разделить, если необходимо.
Sub WriteTxt_OnClick()
Dim fso, txt
Set fso = CreateObject("Scripting.FileSystemObject")
Set txt = fso.CreateTextFile("C:\work\test.txt")
dim tmp : tmp = document.Submitted_Link_To_Mex.body.value
if instr(tmp, vbcrlf) then
dim all_lines : all lines = split(tmp, vbcrlf)
for each line in all_lines
txt.WriteLine line
next
txt.Close
End Sub
И да, вы можете вызвать sub из другого суб, это будет так:
Sub Call_Sub1
dim foo : foo = "i am horrible at deciphering bad english translations of dracula"
Call_Sub2 foo
End Sub
Sub Call_Sub2(str)
dim bar : bar = left(str, 40)
End Sub