|
Выполнить скрипт на сервере | ☑ | ||
---|---|---|---|---|
0
slafor
10.11.22
✎
14:06
|
Подскажите, как можно выполнить bat-файл со строками вида "@echo off
cscript.exe upload.vbs 1460717 .\Gruz.txt". При этом сам bat-файл, upload.vbs (скрипт) и Grus.txt находятся в сетевом каталоге: \\Server\PriceIM\. Сама 1С серверная, SQL. Такое ощущение, что когда делаю ЗапуститьПриложение и прописываю такой путь к bat-файлу, 1С не находит остальные файлы. |
|||
1
Жан Пердежон
10.11.22
✎
14:11
|
У 1Сной учетки прав то хватает?
|
|||
2
Garykom
гуру
10.11.22
✎
14:19
|
(0) или в батнике полные права пропиши
или cd \\Server\PriceIM |
|||
3
Garykom
гуру
10.11.22
✎
14:19
|
(2) тьфу *полные пути
|
|||
4
Garykom
гуру
10.11.22
✎
14:20
|
echo off
\\Server\PriceIM\cscript.exe \\Server\PriceIM\upload.vbs 1460717 \\Server\PriceIM\Gruz.txt |
|||
5
slafor
10.11.22
✎
14:32
|
(4) cscript.exe-то он находит, а дальше возникают "нюансы": если запускаю батник не через 1С, а через cmd, то мне пишет "Ошибка GScript: Ошибка <Не найдено сетевое имя. > при загрузке сценария \\Server\PriceIM\upload.vbs". И в кавычки помещал - то же самое.
|
|||
6
slafor
10.11.22
✎
14:35
|
(2) А если пишу cd \\Server\PriceIM, то в cmd пишет такое сообщение: "CMD.EXE не поддерживает пути UNC в качестве текущей папки".
|
|||
7
Garykom
гуру
10.11.22
✎
14:40
|
(6) открой для себя https://zzz.buzz/2018/03/13/net-use-and-subst-are-effective-per-user/
|
|||
8
Garykom
гуру
10.11.22
✎
14:45
|
(5) >cscript.exe
а ты уверен что нужный cscript.exe находится ? ;) |
|||
9
Garykom
гуру
10.11.22
✎
14:49
|
Еще лучше на 1С копируй свой скрипт в Temp, там запускай и результат копируй обратно
Создавай временные имена файлов! Чтобы двойной запуск (фоновые и т.д.) ничего не испортил |
|||
10
Garykom
гуру
10.11.22
✎
14:50
|
(9)+ Подчистить за собой Temp не забудь, файлы которые насоздавал
|
|||
11
slafor
10.11.22
✎
14:52
|
(8) Уверен. И самое интересно, что скрипт уже запускается. Только теперь другая проблема - судя по всему, не находит сам файл для выгрузки ) . Хотя путь к нему я тоже прописываю полностью:
cscript.exe \\Server\PriceIM\upload.vbs 1460717 \\Server\PriceIM\Gruz.txt И в cmd мне пишет: "Start uploading incremental file.. <...> WshShell.Exec: Не удается найти указанный файл." |
|||
12
Garykom
гуру
10.11.22
✎
15:00
|
(11) внутри vbs с unc путями тоже засада ))
|
|||
13
Garykom
гуру
10.11.22
✎
15:01
|
так что делай (9) и (10)
|
|||
14
Garykom
гуру
10.11.22
✎
15:02
|
ну или net use на любую букву, например T
и cscript.exe T:\upload.vbs 1460717 T:\\Gruz.txt |
|||
15
slafor
10.11.22
✎
15:05
|
(9) Вроде бы отличное решение!
Но у меня почему-то файл не копируется: "Ошибка копирования файлов из '\\Server\PriceIM\start.bat' в 'C:\Users\USR1CV8\AppData\Local\Temp' : Ошибка доступа к файлу" |
|||
16
slafor
10.11.22
✎
15:13
|
(15) Хотя доступ точно есть, это шара.
|
|||
17
slafor
10.11.22
✎
15:36
|
(14) А это будет работать, если выгрузка запускается регламентным заданием, системным пользователем DefUser?
|
|||
18
slafor
10.11.22
✎
15:41
|
+(15) У меня вообще ни один файл из шары во временную директорию не копируется. Везде пишет "Ошибка доступа к файлу".
|
|||
19
Kassern
10.11.22
✎
15:42
|
(15) нда...У вас служба 1с под каким юзвером запускается? Только не говорите, что под системной учеткой.
|
|||
20
slafor
10.11.22
✎
15:57
|
(19) Конкретно не знаю, сейчас посмотрю.
Но тут вот в чем дело. Запустил копию базы в файловом варианте, попробовал сделать то же самое - скопировать файлы во временную папку ("КопироватьФайл("D:\PriceIM\start.bat",КаталогВременныхФайлов());"), и 1С мне выдает точно такую же ошибку! ("Ошибка копирования файлов из 'D:\PriceIM\start.bat' в 'C:\Users\1SPr0g\AppData\Local\Temp\2' : Ошибка доступа к файлу). Что это может быть? |
|||
21
Garykom
гуру
10.11.22
✎
16:05
|
(20) Это кто то даже СП походу не осилил ))
|
|||
22
Kassern
10.11.22
✎
16:07
|
(21) "Что это может быть?"-> (21) Почитайте за метод КопироватьФайл в СП
|
|||
23
slafor
10.11.22
✎
18:06
|
(21)(22) Действительно, здесь моя вина - надо было указать файл-приемник )
Во временную директорию копируется нормально. Если я запускаю батник руками - тоже все нормально идет, скрипт работает, файлы передаются. А вот если запускаю из 1С - не находит передаваемый файл Gruz.txt. И если запускаю через cmd - то же самое. Батник нормально работает, только если запустить его "двойным нажатием" из каталога временных файлов. Понимаю, что скорее всего это связано с тем, что он ищет уже в другой директории. Как мне это исправить? Помогите, пожалуйста. Сам батник я сейчас создаю программно, чтобы в нем прописались пути к файлам скрипта и к Gruz.txt. Так что пути прописаны в батнике полностью. Вот текст кода: КопироватьФайл("\\Server\PriceIM\upload.vbs",КаталогВременныхФайлов() + "upload.vbs"); КопироватьФайл("\\Server\PriceIM\curl.exe",КаталогВременныхФайлов() + "curl.exe"); КопироватьФайл("\\Server\PriceIM\Gruz.txt",КаталогВременныхФайлов() + "Gruz.txt"); Текст = Новый ТекстовыйДокумент; Текст.ДобавитьСтроку("@echo off"); Текст.ДобавитьСтроку(" cscript.exe " + КаталогВременныхФайлов() + "upload.vbs 1460717 " + КаталогВременныхФайлов() + "Gruz.txt"); Текст.Записать(КаталогВременныхФайлов() + "start.bat"); Попытка ЗапуститьПриложение(КаталогВременныхФайлов() + "start.bat"); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; |
|||
24
slafor
10.11.22
✎
19:33
|
Нашел решение.
В формируемом файле start.bat надо добавить строку после echo off: Текст.ДобавитьСтроку("Set path=%path%;" + КаталогВременныхФайлов()); Тогда каталог временных файлов станет основным каталогом, и все заработает. Всем спасибо, отдельное спасибо тем, кто порекомендовал воспользоваться каталогом временных файлов ) |
|||
25
Garykom
гуру
10.11.22
✎
19:39
|
(24)
достаточно было Текст.ДобавитьСтроку("cd " + КаталогВременныхФайлов()); |
|||
26
Garykom
гуру
10.11.22
✎
19:43
|
>Текст.ДобавитьСтроку(" cscript.exe " + КаталогВременныхФайлов() + "upload.vbs 1460717 " + КаталогВременныхФайлов() + "Gruz.txt");
длинные пути надо брать в кавычки КаталогВременных = КаталогВременныхФайлов(); ПутьVBS = """" + КаталогВременных + "upload.vbs" + """"; ПутьGruz = """" + КаталогВременных + "Gruz.txt" + """"; Текст.ДобавитьСтроку("cscript.exe " + ПутьVBS + " 1460717 " + ПутьGruz); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |