2017-01-25 4 views
0

Я создал один file.bat, что выполнить правильно два различных VBS файлы:Создание уникального файла биту

cscript "\\server_1\dir\file_M_1.vbs" "\\server_1\dir\muc1.xlsm" 
cscript "\\server_2\dir\file_H_2.vbs" "\\server_2\dir\muc2.xlsm" 

код двух files.vbs то же самое, потому что он был создан, чтобы сделать то же самое на двух разных серверах.

Это содержимое file_M_1.vbs, что просто запускает макрос под названием «copy_M»:

Dim args, objExcel 
Set args = WScript.Arguments 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Workbooks.Open args(0) 
objExcel.Visible = False 
objExcel.Run "copy_M" 
objExcel.ActiveWorkbook.Save 
objExcel.ActiveWorkbook.Close(0) 
objExcel.Quit 

Вместо этого код file_H_2.vbs, который работает макрос под названием «copy_H»:

Dim args, objExcel 
Set args = WScript.Arguments 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Workbooks.Open args(0) 
objExcel.Visible = False 
objExcel.Run "copy_H" 
objExcel.ActiveWorkbook.Save 
objExcel.ActiveWorkbook.Close(0) 
objExcel.Quit 

я хотел бы знать, если есть s возможность собрать все три части кода только в одном file.bat или file.exe (быть даже планируется запустить в определенное время с помощью планировщика задач of windows7.)

+6

возможно ли это? Конечно. Будем ли мы писать код для вас? Не очень вероятно. Измените сценарий на цикл над 'WScript.Arguments' и запустите макросы в зависимости от того, какой файл вы открыли. Запустите VBScript с списком аргументов, состоящим из обеих книг. –

ответ

1

Я решил проблему таким образом. С помощью других мы создали только один file.bat:

cscript "\\server1\dir\file.vbs" 

он запускает file.vbs:

Dim objExcel 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Workbooks.open("\\server1\dir\muc1.xlsm") 
objExcel.Visible = False 
objExcel.Run "copy_M" 
objExcel.ActiveWorkbook.Save 
objExcel.ActiveWorkbook.Close 
objExcel.Workbooks.open("\\server2\dir\muc2.xlsm") 
objExcel.Visible = False 
objExcel.Run "copy_H" 
objExcel.ActiveWorkbook.Save 
objExcel.ActiveWorkbook.Close 
objExcel.Quit 

он работает отлично. Я включил в планировщик задач windows7 файл file.bat, и все в порядке.

Я не 'т знаю, если это возможно создать только один exe-файл (а не .bat, который работает .vbs)

+0

вы можете построить [гибридный файл] (http://stackoverflow.com/questions/38621603/hybrid-batch-vbs-autorun-as-administrator) – Stephan

+0

Я * сильно * рекомендую против написания Frankenscript. Поддержание и устранение неисправностей - основная боль в тылу. –

+0

@il_betto Вы можете добавить 'objExcel.DisplayAlerts = False', так как вы запускаете скрипт в качестве запланированной задачи. –