Добрый день!
Прошу помочь с проверкой корректности работы программы, по книгам все должно работать, но не работает.
Описание требований к программе. Есть две папки. В первую папку поступают файлы, их нужно скопировать во вторую, при этом нужно провести преобразование файла с помощью внешней программы (через командную строку) и итог перенести во вторую папку, исходный файл должен остаться без изменений.
Проблемы:
1. Программа не проверяет наличие временного файла, который надо удалить или не удаляет (так и не смог понять)
2. После первой конвертации программа вылетает с ошибкой, что не удается найти указанный файл или что отсутствует необходимый параметр (нет исходного файла, который будет преобразовываться), хотя имя файла получалось из этой же папки.
Option Explicit
Const pathepd = "C:\22\Ext\EPD" 'путь к исходным файлам выписок задается в виде константы
Const pathin = "C:\22\In" 'путь к измененным файлам выписок задается в виде константы
Const filetmp = "C:\22\Ext\EPD\tmpfile.xml" 'путь и имя временного файла
Const filetmpzzz = "C:\22\Ext\EPD\zzz.xml" 'путь и имя временного файла
Const filetmpzzz1 = "C:\22\In\1.xml"
Const pathepdtmp = "C:\22\Ext\EPD\"
Dim rebildxml, kolvofactual, nametmp, nametmp2, copyactual, tmpFile, fsotmp, copyactualtmp 'создание переменной для преобразования файла
Dim Text, fso, fso2, epdFile, epdFiles, epdFolder, epd, kolvofepd 'создание переменных для получения списка файлов
Dim inFolder, inFiles, inFile, maskFile, kolvofin, Text1, i, j
Dim epdFilemassiv(50) 'массив для записи имен файлов папки EPD
Dim inFilemassiv(50) 'массив для записи имен файлов папки Inf
kolvofactual = 0
Dim actualFilemassiv(50) 'массив для записи имен необработанных файлов папки EPD, не присутствующих в Inf
i = 0
j = 0
kolvofepd = 0
kolvofin = 0
nametmp = ""
nametmp2 = ""
Set epd = WScript.CreateObject("WScript.Shell")
Set fso = WScript.CreateObject("Scripting.FileSystemObject") 'создание объекта для получения доступа к ФС
Set epdFolder = fso.GetFolder(epd.ExpandEnvironmentStrings(pathepd)) 'получение объекта "Папка" EPD
Set inFolder = fso.GetFolder(epd.ExpandEnvironmentStrings(pathin)) 'получение объекта "Папка" Inf
Set rebildxml = WScript.CreateObject("WScript.Shell") 'преобразование xml
' получение списка файлов из папки EPD
If fso.FolderExists(pathepd) Then
' получение списка файлов из папки EPD и Inf
Set epdFiles = epdFolder.Files ' получение файлов
Set inFiles = inFolder.Files ' получение файлов
' запись в массивы "o"
For i=0 To 50
epdFilemassiv(i) = "o"
inFilemassiv(i) = "o"
Next
For Each epdFile In epdFiles 'получение количества файлов и запись имен файлов в epdFilemassiv
If fso.GetExtensionName(epdFile) = "xml" Then
epdFilemassiv(kolvofepd) = epdFile.Name
kolvofepd = kolvofepd + 1
End If
Next
For Each inFile In inFiles 'получение количества файлов и запись имен файлов в inFilemassiv
If fso.GetExtensionName(inFile) = "xml" Then
inFilemassiv(kolvofin) = inFile.Name
kolvofin = kolvofin + 1
End If
Next
If kolvofepd >= kolvofin Then ' если колво файлов в EPD больше или равно чем в In ищем уникальные имена
kolvofactual = kolvofepd - kolvofin 'получаем кол-во новых файлов
For i=0 To kolvofepd
For j=0 To kolvofin
If (epdFilemassiv(i) = inFilemassiv(j)) Then ' если имена в массивах одинаковые, обнуляем имена
epdFilemassiv(i) = "o"
inFilemassiv(j) = "o"
End If
Next
If (epdFilemassiv(i) "0") Then 'получаем уникальные не нулевые имена
If (epdFilemassiv(i) inFilemassiv(j)) Then
actualFilemassiv (i) = epdFilemassiv(i) ' "-" - между не нулевыми строками могут быть нулевые.
End If
End If
Next
End If
For i=0 To kolvofactual ' сортируем нулевые строки, чтобы они были в конце
If (actualFilemassiv (i) = "o") Then ' если строка нулевая, то на нулевую строку записываем следующую
actualFilemassiv (i) = actualFilemassiv (i+1)
actualFilemassiv (i+1) = "o"
copyactual = copyactual & pathepd &"\"& actualFilemassiv (i) & vbCrLf
MsgBox copyactual
End If
Next
MsgBox copyactual
'файл !_new.bat создает временный преобразованный файл, в "rebildxml" подается команда на преобразование. в этом блоке возникают ошибки
For i=0 To kolvofactual
copyactualtmp = pathepdtmp & actualFilemassiv (i) 'получение полного пути (путь до папки файла + название актуального файла)
'copyactual = copyactual & vbCrLf
MsgBox copyactualtmp
'Set tmpFile = fsotmp.GetFile(copyactual)
'tmpFile.Copy filetmp, true
If (fso.FileExists(copyactualtmp)) Then ' проверка наличия актуального файла (возможно проверка проходит некорректно)
If (fso.FileExists(filetmpzzz1)) Then ' проверка наличия временного преобразованного файла (возможно проверка проходит некорректно)
'Set tmpFile = fso.GetFile(filetmpzzz1)
fso.DeleteFile filetmpzzz1, true ' файл не удаляется (возможно проверка проходит некорректно)
End If
copyactual = "C:\11\!_new.bat " & copyactualtmp
MsgBox copyactual
rebildxml.Run(copyactual) ' корректно преобразуется только первый файл, на следующем вылетает с ошибкой
Set rebildxml = Nothing
'Set tmpFile = fsotmp.GetFile(filetmpzzz1)
' fso.DeleteFile filetmpzzz1, true ' файл не удаляется (при снятии комментария ругается)
End If
Next
Else
MsgBox "Ненайдена папка C:\22\Ext\EPD"
End If
Прошу помочь с проблемой. С уважением russv
VBS/WSH/JS - Прошу помочь с проверкой корректности работы программы, по книгам все должно работать
Ответить
Сообщений: 1
• Страница 1 из 1
Вернуться в «Скриптовые языки администрирования Windows»
Перейти
- Forum-OSzone.ru
- ↳ Информация
- Клиентские ОС Microsoft
- ↳ Microsoft Windows 95/98/Me (архив)
- ↳ Microsoft Windows 2000/XP
- ↳ Microsoft Windows Vista
- ↳ Microsoft Windows 7
- ↳ Microsoft Windows 8 и 8.1
- ↳ Microsoft Windows 10
- ↳ Microsoft Windows 11
- Linux и FreeBSD
- ↳ Общий по Linux
- ↳ Общий по FreeBSD
- ↳ Программное обеспечение Linux и FreeBSD
- ↳ Железо в Linux
- ↳ Новости и флейм из мира *nix
- ↳ Железо во FreeBSD
- ↳ Программирование в *nix
- Общий
- ↳ Флейм
- ↳ О сайте и форуме
- ↳ Юмор
- Компьютеры + Интернет
- ↳ Вебмастеру
- ↳ Хочу все знать
- ↳ Игры
- ↳ Мобильные ОС, смартфоны и планшеты
- ↳ Сетевые технологии
- Зона тестирования
- ↳ Тест-форум
- Железо
- ↳ Поиск драйверов, прошивок и руководств
- ↳ Непонятные проблемы с Железом
- ↳ Процесcоры
- ↳ Материнские платы и память
- ↳ Видеокарты
- ↳ Разгон, охлаждение и моддинг
- ↳ Накопители (SSD, HDD, USB Flash)
- ↳ Оптические приводы
- ↳ Сетевое оборудование
- ↳ Прочее железо
- ↳ Выбор отдельных компонентов компьютера и конфигурации в целом
- ↳ Ноутбуки
- ↳ Металлолом
- Автоматическая установка Windows
- ↳ Автоматическая установка Windows 2000/XP/2003
- ↳ Автоматическая установка приложений
- ↳ Наборы обновлений для Windows XP/2003/Windows 7
- ↳ Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista
- ↳ Проект WinStyle
- Информационная безопасность
- ↳ Защита компьютерных систем
- ↳ Лечение систем от вредоносных программ
- Архив
- ↳ Новости железа
- ↳ Новости информационных технологий
- ↳ Новости и события Microsoft
- ↳ Новости программного обеспечения
- Цифровые технологии
- ↳ Видео и аудио: обработка и кодирование
- ↳ Цифровое изображение
- Серверные продукты Microsoft
- ↳ Microsoft Windows NT/2000/2003
- ↳ Microsoft Exchange Server
- ↳ Windows Server 2008/2008 R2
- ↳ ISA Server / Microsoft Forefront TMG
- ↳ WSUS
- ↳ Другие серверные продукты
- ↳ Windows Server 2012/2012 R2
- ↳ Windows Server 2016/2019/2022
- Программирование, базы данных и автоматизация действий
- ↳ Программирование и базы данных
- ↳ Скриптовые языки администрирования Windows
- ↳ AutoIt
- Сфера Microsoft
- ↳ Программное обеспечение Windows
- ↳ Лицензирование продуктов Microsoft
- ↳ Устранение критических ошибок Windows
- ↳ Microsoft Office (Word, Excel, Outlook и т.д.)
- Изменение внешнего вида Windows
- ↳ Оформление Windows 11/ 10 / 8 / 7 / Vista
- ↳ Оформление Windows XP