Ветеран
Сообщения: 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
|