Alvin Seville
337 / 269 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
1

Запуск конкретной программы из .bat файла

21.01.2020, 13:30. Показов 2425. Ответов 9
Метки нет (Все метки)

Имеется следующий скрипт:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
@echo off
title PrepareVersion
setlocal
 
Rem = = = = = = = = = = = = = = = = = = = = = = = = = = =
 
set "dllPath=%~1ABCNET.dll"
set "xmlPath=%~1ABCNET.xml"
set "pascalExamplesFolder=%~2NETMouse - .NET release\Examples\PascalABC.NET\"
set "csharpExamplesFolder=%~2NETMouse - .NET release\Examples\C#\"
set "preparedReleaseFolder=%~2Prepared release\"
 
set "copyingError=[CRITICAL ERROR] ABCNET.dll or ABCNET.xml file or folder to copy files to not found: "
 
echo Files copying...
 
if not exist "%pascalExamplesFolder%" (
    echo %copyingError%%pascalExamplesFolder%
    pause
    exit 1
)
 
if not exist "%csharpExamplesFolder%" (
    echo %copyingError%%csharpExamplesFolder%
    pause
    exit 1
)
 
if not exist "%dllPath%" (
    echo %copyingError%%dllPath%
    pause
    exit 1
)
 
copy "%dllPath%" "%pascalExamplesFolder%"
copy "%dllPath%" "%csharpExamplesFolder%"
 
 
if not exist "%xmlPath%" (
    echo %copyingError%%xmlPath%
    pause
    exit 1
)
 
copy "%xmlPath%" "%pascalExamplesFolder%"
copy "%xmlPath%" "%csharpExamplesFolder%"
 
echo Files have been successfully copied.
 
Rem = = = = = = = = = = = = = = = = = = = = = = = = = = =
 
set "pabcnetc=C:\Program Files (x86)\PascalABC.NET\pabcnetc.exe"
 
set "compilationError=[CRITICAL ERROR] pabcnetc.exe file not found: "
 
echo Examples recompiling...
 
if not exist "%pabcnetc%" (
    echo %compilationError%%pabcnetc%
    pause
    exit 1
)
 
echo Examples have been successfully recompiled.
 
Rem = = = = = = = = = = = = = = = = = = = = = = = = = = =
 
echo Files archiving...
 
echo Files have been successfully archived.
 
endlocal
Файл, который надо запустить - это C:\Program Files (x86)\PascalABC.NET\pabcnetc.exe. Репозиторий с данным батником - здесь. При попытке компиляции Visual Studio в батнике выдаёт:
Непредвиденное появление: \PascalABC.NET\pabcnetc.exe.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2020, 13:30
Ответы с готовыми решениями:

Запуск bat-файла из сторонней программы
Вероятно нубский вопрос, но у меня уже голова пухнет. т.к. не могу понять причины проходящего, не...

Запуск программы из bat-файла с передачей данных
Здравствуйте, возникла проблема , не могу разобраться как сделать данную утилиту. У меня есть...

Запуск файла в директории с .bat, когда .bat запущен от имени администратора
Здравствуйте. Имею бат, он должен запускать файл "<тут директория батника>\n1.bat". Но если даже...

Последовательный запуск нескольких BAT-файлов из основного BAT-файла
Доброго времени суток всем... Помогите кто понимает.. Есть bat... @echo off start "" "D:\$\Pale...

9
Эксперт .NET
16745 / 12496 / 3285
Регистрация: 17.09.2011
Сообщений: 20,727
21.01.2020, 16:20 2
Лучший ответ Сообщение было отмечено Соколиный глаз как решение

Решение

Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Windows Batch file
1
2
if not exist "%pabcnetc%" (
    echo %compilationError%%pabcnetc%
У вас в переменной pabcnetc закрывающая скобка, которая при замене парсером переменной на ее значение становится частью скрипа и закрывает открывающую скобку на предыдущей строке.
Либо заключите переменные в кавычки, либо используйте отложенное вычисление переменных:
Windows Batch file
1
2
3
4
5
6
7
SETLOCAL EnableDelayedExpansion
 
if not exist "%pabcnetc%" (
    echo !compilationError!!pabcnetc!
    ...
)
SETLOCAL DisableDelayedExpansion
1
Alvin Seville
337 / 269 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
21.01.2020, 19:00  [ТС] 3
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
@echo off
title PrepareVersion
setlocal
 
Rem = = = = = = = = = = = = = = = = = = = = = = = = = = =
 
set "dllPath=%~1ABCNET.dll"
set "xmlPath=%~1ABCNET.xml"
set "pascalExamplesFolder=%~2NETMouse - .NET release\Examples\PascalABC.NET\"
set "csharpExamplesFolder=%~2NETMouse - .NET release\Examples\C#\"
set "preparedReleaseFolder=%~2Prepared release\"
 
set "copyingError=[CRITICAL ERROR] ABCNET.dll or ABCNET.xml file or folder to copy files to not found: "
 
echo Files copying...
 
if not exist "%pascalExamplesFolder%" (
    echo %copyingError%%pascalExamplesFolder%
    pause
    exit 1
)
 
if not exist "%csharpExamplesFolder%" (
    echo %copyingError%%csharpExamplesFolder%
    pause
    exit 1
)
 
if not exist "%dllPath%" (
    echo %copyingError%%dllPath%
    pause
    exit 1
)
 
copy "%dllPath%" "%pascalExamplesFolder%"
copy "%dllPath%" "%csharpExamplesFolder%"
 
 
if not exist "%xmlPath%" (
    echo %copyingError%%xmlPath%
    pause
    exit 1
)
 
copy "%xmlPath%" "%pascalExamplesFolder%"
copy "%xmlPath%" "%csharpExamplesFolder%"
 
echo Files have been successfully copied.
 
Rem = = = = = = = = = = = = = = = = = = = = = = = = = = =
 
set "pabcnetc=C:\Program Files (x86)\PascalABC.NET\pabcnetc.exe"
 
set "compilationError=[CRITICAL ERROR] pabcnetc.exe file not found: "
 
echo Examples recompiling...
 
if not exist "%pabcnetc%" (
    echo "%compilationError%%pabcnetc%"
    pause
    exit 1
)
 
for %file in (%pascalExamplesFolder%*) do pabcnetc.exe %file
 
echo Examples have been successfully recompiled.
 
Rem = = = = = = = = = = = = = = = = = = = = = = = = = = =
 
echo Files archiving...
 
echo Files have been successfully archived.
 
endlocal
Только, не запускается компилятор pabcnetc.exe... Возвращается ошибка с кодом 255...

Цель - пройтись по всем .pas файлам из папки примеров и перекомпилировать их.
0
712 / 314 / 130
Регистрация: 17.03.2014
Сообщений: 795
21.01.2020, 19:22 4
Windows Batch file
64
for %file in (%pascalExamplesFolder%*) do pabcnetc.exe %file
неверный синтаксис оператора, см.
Windows Batch file
1
for /?
1
Alvin Seville
337 / 269 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
21.01.2020, 19:24  [ТС] 5
Я смотрел здесь:
FOR %y IN (D:\movie\*) DO @ECHO %y
0
712 / 314 / 130
Регистрация: 17.03.2014
Сообщений: 795
21.01.2020, 19:30 6
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Я смотрел здесь:
не пренебрегайте хелпом, у вас должно быть примерно следующее:
Windows Batch file
64
for %%F in ("%pascalExamplesFolder%*") do pabcnetc.exe "%%F%"
1
Alvin Seville
337 / 269 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
21.01.2020, 19:34  [ТС] 7
А кавычка перед %%F% - обязательна?
0
712 / 314 / 130
Регистрация: 17.03.2014
Сообщений: 795
21.01.2020, 19:38 8
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
А кавычка перед %%F% - обязательна?
да, и - пардон, строка д.б. такая:
Windows Batch file
64
for %%F in ("%pascalExamplesFolder%*") do pabcnetc.exe "%%F"
т.е. в конце строки, после F
% быть не должно!
1
Alvin Seville
337 / 269 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
21.01.2020, 19:41  [ТС] 9
b0gus, следующий код отказывается работать, хотя файл по указанному пути есть:
Windows Batch file
1
for %%F in ("%pascalExamplesFolder%*") do "%pabcnetc%" "%%F"
Компиляция затягивается при ошибке и при отмене её выдаётся:
Необработанное исключение: System.IO.IOException: Неверный дескриптор.
1>
1> в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
1> в System.Console.GetBufferInfo(Boolean throwOnNoConsole, Boolean& succeeded)
1> в PascalABCCompiler.ConsoleCompiler.Main(String[] initialArgs)
Это почему происходит?
0
712 / 314 / 130
Регистрация: 17.03.2014
Сообщений: 795
21.01.2020, 19:46 10
Лучший ответ Сообщение было отмечено Соколиный глаз как решение

Решение

Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Это почему происходит?
это уже паскалистов пытать надо, и показать код паскалевский, вызывающий IOException
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2020, 19:46
Помогаю со студенческими работами здесь

Конкретный звук на запуск конкретной программы
Доброе время суток! Не знаю к какому разделу мой вопрос больше относится, поэтому пишу здесь....

Запуск bat-файла из vbs-файла от имени указанного пользователя
Здравствуйте форумчане, натолкните пожалуйста как можно реализовать выполнение bat файла такого...

Запуск bat-файла для копирования определённого файла по сети из Планировщика заданий
Добрый день, Имеется в наличии скрипт на копирование файла по сети. net use Y:...

Запуск bat-файла при закрытии текстового файла
Доброго времени суток всем, помогите, пожалуйста, дело в том, что мне нужно написать батник,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru