Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: VBS, поиск и замена в строке в txt файле
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » VBS, поиск и замена в строке в txt файле

Страниц (1): [1]
 

1. Axiles - 19 Октября, 2018 - 05:48:56 - перейти к сообщению
Здравствуйте. Только постигаю VBS.
Есть файл 111.txt в котором в столбец записаны имена компов.
Комп грузится, находит своё имя и стирает его.
В принципе поиск своего имени реалезован, но не могу сообразить как его стереть.
пытаюсь так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Set tf = fso.OpenTextFile("с:111.txt", 1)'открываю файл
  2. Do Until tf.AtEndOfStream 'пока не наступит конец файла
  3. str = tf.ReadLine'читаю строку
  4.  

если строка соответствует имени компа то нужно её стереть, перезаписать
вот тут то и не могу сообразить, что мне теперь делать с
2. Строитель - 19 Октября, 2018 - 16:27:34 - перейти к сообщению
Набросал пример на VBA, проверил в MS Word - работает корректно. При необходимости допилите его под VBS. В переменную need запишете искомую подстроку, а в переменную repl - значение для замены. Если замена не требуется (только удаление), тогда оставьте переменную repl как есть:
CODE (html):
скопировать код в буфер обмена
  1. Sub StrReplace()
  2. '
  3. ' Поиск и замена подстрок в текстовом файле
  4. '
  5.     Dim fso, txtFile As Object
  6.     Dim str, need, repl, fname As String
  7.     Set fso = CreateObject("Scripting.FileSystemObject")
  8.        
  9.     fname = "С:\111.txt"
  10.     need = "" 'Что ищем
  11.     repl = "" 'На что меняем
  12.    
  13.     Set txtFile = fso.OpenTextFile(fname, 1)
  14.     str = txtFile.ReadAll
  15.     txtFile.Close
  16.    
  17.     str = Replace(str, need, repl)
  18.     Kill fname
  19.    
  20.     Set txtFile = fso.CreateTextFile(fname, True)
  21.     txtFile.Write (str)
  22.     txtFile.Close
  23.    
  24. End Sub
3. Axiles - 22 Октября, 2018 - 10:01:22 - перейти к сообщению
Хммм.
Если я правильно понял:
-открыли файл для чтения
-считали всё содержимое
-закрыли файл
-заменили найденные подстроки (кстати не знал что реплейс может вот так вот сразу весь массив реплеснуть. думал нада по строкам...)
-Kill fname это что? удалили файл?
-создали файл заново
-записали в него
-закрыли

я уже хотел примерно по такому же пути идти, только через одно место ), а оказывается всё гораздо проще)
4. Строитель - 22 Октября, 2018 - 11:55:13 - перейти к сообщению
Axiles пишет:
Если я правильно понял ...
Да, правильно.
Axiles пишет:
Kill fname это что? удалили файл?
Да, это удаление файла.
5. Axiles - 23 Октября, 2018 - 05:33:08 - перейти к сообщению
А вот такой вопрос.
Может получиться так, что один комп запустил скрипт с ервера, удалил файл, но ещё не создал новый, в это время другой комп запускает этот же скрипт, а файла то нету!

 

Powered by ExBB FM 1.0 RC1