Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
VBS/WSH/JS - обход по маске

Пользователь


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

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


Задача (возможно смешная)
есть код - вставляет в текстовый файл в 12 строку переменное значение (переменная из батника), vbs находится в той же папке где и изменяемый файл.
Код: Выделить весь код
fName = "A_polyS.txt"                     ' Где текстовый файл
iStrok = 12                                      ' В какой строке меняем текст
Set objArgs = WScript.Arguments   ' прием и обозначение переменной из батника
repTxt = objArgs(0)      ' Какой текст поместим в указанную строку
Set FSO = CreateObject("Scripting.FileSystemObject")
Set F = FSO.OpenTextFile(fName, 1, False)       ' Открываем исходный текст файл для чтения
AllTxt = F.ReadAll()                            ' Cчитываем весь файл в строковую переменную
F.Close                                         ' Закрываем файл
Mas = Split(AllTxt, vbCrLf)                     ' Разбиваем полученную строку в массив. Резделитель - конец строки и перевод строки vbCrLf
If UBound(Mas) + 1 >= iStrok Then
    Mas(iStrok - 1) = repTxt                    ' Заменяем нужный элемент массива (строку текста) заданной
    
    AllTxt = Join(Mas, vbCrLf)                  ' Консолидируем массив в строку для записи
    
    Set F = FSO.OpenTextFile(fName, 2, False)   ' Открываем исходный файл для записи
    F.Write AllTxt                              ' Записываем полученное на место исходного файла
    F.Close                                     ' Закрываем файл
End If
Файл "тяжелый" - от 100 до 450 Мб, теперь их несколько - нужен обход по маске расширения, причем во все файлы переменная вставляется в 12 строку, а в одном из файлов file_Layer.txt- та же переменная вставляется в 11 строчку (12 строка без изменений)
Спасибо.

-------
- /../а как бы ты поступил, если бы сейчас через эту дверь к нам вошел бог?
- Я бы велел ему вытереть ноги/../ © Р.Хайнлайн


Отправлено: 16:42, 23-06-2015

 

Ветеран


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

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


Цитата Imago_:
vbs находится в той же папке где и изменяемый файл. »
Тогда нужен другой код, поскольку данный код работает вовсе не с той же папкой, где находится скрипт, а с текущей папкой текущего диска. То, что они могут совпадать, не делает данный код корректным.

Цитата Imago_:
Файл "тяжелый" - от 100 до 450 Мб »
Это что ж за файлы такие — ПСС?! В данном случае использовать разбиение прочитанного содержимого таких объёмов в массив — крайне неудачное решение, как с точки зрения расхода памяти, так и производительности. Тут лучше использовать такой код:
Скрытый текст
Код: Выделить весь код
Option Explicit

Const ForWriting = 2


Dim strFileName
Dim lngLineNumber4Replace
Dim strString4Replace

Dim strFullFileName

Dim i
Dim strContent


strFileName = "A_polyS.txt"
lngLineNumber4Replace = 12

If WScript.Arguments.Count = 1 Then
	strString4Replace = WScript.Arguments.Item(0)
	
	With WScript.CreateObject("Scripting.FileSystemObject")
		strFullFileName = .BuildPath(.GetParentFolderName(WScript.ScriptFullName), strFileName)
		
		If .FileExists(strFullFileName) Then
			strContent = ""
			
			With .OpenTextFile(strFileName)
				For i = 1 To 11
					strContent = strContent & .ReadLine() & vbCrLf
				Next
				
				strContent = strContent & strString4Replace & vbCrLf
				strContent = strContent & .ReadAll()
				
				.Close
			End With
			
			With .OpenTextFile(strFileName, ForWriting)
				.Write strContent
				.Close
			End With
		Else
			WScript.Echo "Can't find file [" & strFullFileName & "]."
			WScript.Quit 2
		End If
	End With
Else
	WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <String for replace>"
	WScript.Quit 1
End If

WScript.Quit 0


Цитата Imago_:
нужен обход по маске расширения »
Какой именно маске?

Цитата Imago_:
причем во все файлы »
«Все файлы» — где находятся?
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:09, 25-06-2015 | #2



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

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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Принтер по умолчанию по маске имени sigmatik Скриптовые языки администрирования Windows 9 26-01-2022 10:09
Любой язык - скрипт по копирвоанию и последующего удаления файлов по маске названия файла santey007 Скриптовые языки администрирования Windows 19 22-12-2015 10:43
CMD/BAT - Поиск файлов по маске на удаленных машинах по словарю с выгрузкой в *.txt gremlintv2 Скриптовые языки администрирования Windows 3 09-12-2013 04:46
CMD/BAT - розархивация файлов по маске с архива отсортированого по датах VitHAK Скриптовые языки администрирования Windows 1 28-12-2009 11:07




 
Переход