Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


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

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


surgutfred,
Попробуйте натравить мой .vbs-скрипт. Пропишите свой сетевой путь. Я не проверял на таком пути, по идее, должно работать. Пропишите путь создаваемого текстового файла
Код: Выделить весь код
BoxIn = "Z:\PC86\CONS_BASE2\BASE"
SubDir = Array("ARB", "BCN", "BDV", "BMS", "BPV", "BSK")
OutFile = "Z:\Box_Out\Обзор Консультант Плюс.txt"

Set FSO = CreateObject("Scripting.FileSystemObject")

nMaxSize = 16
nMaxFiles = 5

OutString = BoxIn + vbCrLf + vbCrLf
tSize = 0
tFiles = 0
For Each inFolder In SubDir
    inName = BoxIn + "\" + inFolder
    With FSO.GetFolder(inName)
        inSize = .Size
        inFiles = .Files.Count
    End With
    tSize = tSize + inSize
    tFiles = tFiles + inFiles
    OutString = OutString + IntFormat(inSize, nMaxSize) + IntFormat(inFiles, nMaxFiles) + "  " + inFolder + vbCrLf
Next
OutString = OutString + String(nMaxSize + nMaxFiles, "-") + vbCrLf + IntFormat(tSize, nMaxSize) + IntFormat(tFiles, nMaxFiles)

With FSO.OpenTextFile(OutFile, 2, True)
    .Write (OutString)
    .Close
End With
MsgBox OutString

Function IntFormat(S, N)
    SS = Replace(FormatNumber(S, 0), Chr(160), "'")
    If N > Len(SS) Then SS = Right(Space(N) + SS, N)
    IntFormat = SS
End Function
Сохраните код, например, в блокноте в файл с расширением .vbs в windows-кодировке. Результат выдаётся в байтах, так как Вы не писали, в каких единицах нужно. Я смутно помню Консультант Плюс, ИМХО, в папках с базами нет подпапок, но если в папках с базами существуют подпапки, то в этом варианте количество файлов будет подсчитано неверно.Если не хотите, чтобы на экран выдавалось сообщение, удалите строку
MsgBox OutString
Скорректировал благодоря подсказке Iska
То же самое, данные передаются в аргументах
Код: Выделить весь код
Set WArg = WScript.Arguments
If WArg.Count >= 3 Then
        With WArg
		OutFile = .Item(0)
		BoxIn =  .Item(1)
		NSubDir = .Count-3
		Redim SubDir(NSubDir)
		For i = 0 To NSubDir
			SubDir(i) = .Item(i+2)
		Next
	End With
	Set FSO = CreateObject("Scripting.FileSystemObject")

	nMaxSize = 16
	nMaxFiles = 5

	OutString = BoxIn + vbCrLf + vbCrLf
	tSize = 0
	tFiles = 0
	For Each inFolder In SubDir
    		inName = BoxIn + "\" + inFolder

		On Error Resume Next
		Set SubFolder = FSO.GetFolder(inName)
		If Err.Number <> 0 Then
    			OutString = OutString + "Нет папки" + Space(nMaxSize + nMaxFiles-9) + "  " + inFolder + vbCrLf
		Else
    			With SubFolder
        			inSize = .Size
        			inFiles = .Files.Count
    			End With
    			tSize = tSize + inSize
    			tFiles = tFiles + inFiles
    			OutString = OutString + IntFormat(inSize, nMaxSize) + IntFormat(inFiles, nMaxFiles) + "  " + inFolder + vbCrLf
		End If
		On Error Goto 0
	Next
	OutString = OutString + String(nMaxSize + nMaxFiles, "-") + vbCrLf + IntFormat(tSize, nMaxSize) + IntFormat(tFiles, nMaxFiles)

	With FSO.OpenTextFile(OutFile, 2, True)
    		.Write (OutString)
    		.Close
	End With
	MsgBox OutString
Else
	ErrMess = "" 
	ErrMess = ErrMess + "Количество аргументов """ + CStr(WArg.Count) + """ недостаточно" + vbCrLf + vbCrLf
	ErrMess = ErrMess + "Укажите:" + vbCrLf
	ErrMess = ErrMess + "1. Путь к выходному текстовому файлу" + vbCrLf
	ErrMess = ErrMess + "2. Путь к папке с подпапками баз" + vbCrLf
	ErrMess = ErrMess + "3. Наименование 1 подпапки с базами" + vbCrLf
	ErrMess = ErrMess + "4. Наименование 2 подпапки с базами" + vbCrLf
	ErrMess = ErrMess + "... и т д"

	MsgBox ErrMess
End If

Function IntFormat(S, N)
    SS = Replace(FormatNumber(S, 0), Chr(160), "'")
    If N > Len(SS) Then SS = Right(Space(N) + SS, N)
    IntFormat = SS
End Function
Пример вызова (допустим, скрипт называется skript.vbs):
Код: Выделить весь код
Z:\script.vbs "Z:\Box_Out\Обзор Консультант Плюс.txt" "Z:\PC86\CONS_BASE2\BASE" ARB BCN BDV BMS BPV BSK
Либо можно написать батник в одну строчку, и, вместо того, чтобы рисовать текстовый файл spisok.txt для набора баз, можно сделать этот вызов для конкретного набора баз в однострочном бат-файле, например spisok.bat
Код: Выделить весь код
Call Z:\script.vbs "Z:\Box_Out\Обзор Консультант Плюс.txt" "Z:\PC86\CONS_BASE2\BASE" ARB BCN BDV BMS BPV BSK

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 10-12-2017 в 11:59.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:12, 08-12-2017 | #5