Содержание

Как вызвать batch file с параметрами из командной строки



Ниже приведена строка в моем скрипте power shell, где я вызываю batch file (с параметрами) и получаю ошибку позиционного параметра.

Не мог бы кто-нибудь помочь, как вызвать batch file с параметрами из скрипта powershell и как захватить этот входной параметр из batch file. Спасибо

Строка в моем сценарии Power shell:

Пуск-Процесс «cmd.exe» «/c D:\load.bat» «$Пароль»

--Error:
**PS D:\Oracle\Scripts\Obi> .\XYZ.ps1
Start-Process : **A positional parameter cannot be found that accepts argument 'password'.**
At D:\.ps1:4 char:1
+ Start-Process "cmd.exe" "/c D:\load.bat"  "$Password"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Start-Process], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand**

Скрипт в Batch file (load.bat):

set "Var=%1"
for %%i in (*.csv) do (
    sqlldr USERID=userid/%Var%@server:prot/domain, CONTROL=control.ctl, LOG=logfile.log,ERRORS=9999 data='%%i' direct='true'
    move %%i D:\backup
)
powershell batch-file
Поделиться Источник m.joe     29 ноября 2017 в 18:01

3 ответа


  • вызов C# exe из командной строки с помощью batch file

    Я хочу создать файл exe с помощью C#, который будет отправлять электронные письма. Я хочу вызвать этот exe, используя batch file. Должен ли я создать приложение веб-формы или просто библиотеку классов ? Можно ли вызвать exe с помощью batch file из командной строки? Пожалуйста, предложите.

  • обновление параметров командной строки в batch file

    **Batch файл **I я пишу batch file, который принимает параметры командной строки и делает некоторые вещи, если параметры совпадают. Но когда вы снова запускаете batch file с новыми параметрами, файл все еще работает со старыми параметрами. первый запуск: file.bat-name hello-w 400 -r 320 второй…



1

Чтобы запустить batch file (сценарий cmd.exe shell) из приглашения PowerShell, просто введите имя batch file, а затем его параметры и нажмите Enter . Помните: PowerShell — это shell, что означает, что он запускает команду, которую вы вводите, точно так же, как и cmd.exe . Например:

D:\load.bat [param1 [param2 [...]]

Одно из отличий от cmd.exe заключается в том, что если команда, которую вы хотите запустить, содержит пробелы, заключите команду в кавычки и вызовите ее с помощью оператора & (вызов или вызов). Например:

& "D:\Script Tools\load.bat" [param1 [param2 [...]]

Так же , как и в cmd.exe, если параметр содержит пробелы, не забудьте указать его в кавычках.

Поделиться Bill_Stewart     29 ноября 2017 в 19:08



1

Вы должны быть в состоянии бежать:

D:\load.bat "$Password"

Или:

cmd.exe /c D:\load.bat "$Password"

Однако вы также должны уметь бегать:

Start-Process -FilePath 'C:\Windows\System32\cmd.exe' -ArgumentList '/c', 'D:\load.bat', "$Password"

Обратите внимание, что /c и 'D:\load.bat' считаются отдельными аргументами.

Start-Process может быть полезен, если вы хотите скрыть окно (-WindowStyle Hidden

) или заставить PowerShell ждать завершения скрипта ( -Wait ). вам может понадобиться параметр -PassThru , если вам нужно значение, возвращаемое из batch file.

Поделиться Bacon Bits     29 ноября 2017 в 19:08



0

В случае сомнений прочтите и следуйте документации Start-Process .

start-process cmd.exe -ArgumentList "/c", "D:\load.bat", "$password"

Выше будет работать в предположении, что переменная $password не содержит cmd ядовитых символов (см. перенаправление), например

& Ampersand
< Less-Than Sign
> Greater-Than Sign
| Vertical Line

Поделиться

JosefZ     29 ноября 2017 в 19:28


  • Batch file с переменным номером параметра командной строки

    У меня есть следующие batch file: :LOOP ping %1 ping %2 goto LOOP Приведенный выше файл работает только с двумя параметрами командной строки. Как сделать эту работу из переменного числа параметров командной строки. Например, если во время выполнения были предоставлены четыре параметра командной…

  • Как отправить аргументы командной строки в batch file, содержащие символ»=»

    Я хочу вызвать batch file (tomcat — startup.bat), передав аргумент командной строки примерно так: c:>startup.bat -Dsun.lang.ClassLoader.allowArraySyntax=true Но символ = заменяется пробелом. Если я поставил c:>startup.bat-Dsun.lang.ClassLoader.allowArraySyntax=true, то значение было установлено…


Похожие вопросы:


Почему существует разница между кодировкой командной строки Windows и batch file?

Например, предположим, что у меня есть batch file с именем ‘test.cmd’ , и он просто содержит: echo %1 Я могу вызвать это непосредственно из командной строки с помощью ‘test.cmd some¬arg’ , и в…


Как установить параметры командной строки с помощью batch file?

prompt $ cls cmd color 87 Это мой batch file. Он открывает командную строку, но с настройками по умолчанию. Как я могу изменить цвет и подсказку командной строки, прежде чем открыть ее в batch file?…


Способ запуска Excel macros из командной строки или batch file?

У меня есть макрос Excel VBA, который мне нужно запускать при доступе к файлу из batch file, но не каждый раз, когда я его открываю (следовательно, не используя событие open file). Есть ли способ…


вызов C# exe из командной строки с помощью batch file

Я хочу создать файл exe с помощью C#, который будет отправлять электронные письма. Я хочу вызвать этот exe, используя batch file. Должен ли я создать приложение веб-формы или просто библиотеку…


обновление параметров командной строки в batch file

**Batch файл **I я пишу batch file, который принимает параметры командной строки и делает некоторые вещи, если параметры совпадают. Но когда вы снова запускаете batch file с новыми параметрами, файл…


Batch file с переменным номером параметра командной строки

У меня есть следующие batch file: :LOOP ping %1 ping %2 goto LOOP Приведенный выше файл работает только с двумя параметрами командной строки. Как сделать эту работу из переменного числа параметров…


Как отправить аргументы командной строки в batch file, содержащие символ»=»

Я хочу вызвать batch file (tomcat — startup.bat), передав аргумент командной строки примерно так: c:>startup.bat -Dsun.lang.ClassLoader.allowArraySyntax=true Но символ = заменяется пробелом. Если…


Как вызвать форму Oracle (6i) с пользовательскими параметрами из командной строки

Есть ли способ вызвать форму Oracle (6i) из командной строки с пользовательскими параметрами ? Печатание ifrun60.exe userid=<uid/pwd> module=<form name> в командной строке будет запущена…


Как вызвать batch file из batch file

Мне нужен синтаксис, чтобы вызвать batch file из первого batch file. Имя второго пакетного файла изменяется вместе с ревизией. так что у меня есть только половина моего второго имени batch file. Как…


Как узнать, был ли batch file открыт двойным щелчком мыши или командной строкой

На A Windows 7 у меня есть исполняемый файл, скажем immutableProg.exe , который я хочу вызвать 3 раза с определенными параметрами. Это делается с помощью batch file myBatch.bat . Содержание…

Как запустить программу с параметрами командной строки в Windows’ cmd с ‘старт’ команду?

start /b "" "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64"

Если вы прочитали список параметров с старт /?:

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
      [command/program] [parameters]

    "title"     Title to display in window title bar.
    command/program
                If it is an internal cmd command or a batch file then
                the command processor is run with the /K switch to cmd.exe.
                This means that the window will remain after the command
                has been run.

                If it is not an internal cmd command or batch file then
                it is a program and will run as either a windowed application
                or a console application.

    parameters  These are the parameters passed to the command/program.

Он ожидает, что «название» заключено в кавычки (" в). Поскольку ваш путь программу включены цитаты, то есть интерпретируется как название. Добавление явного название (в данном случае, пустой, в "" в) строительство.


Альтернативным методом является использование переключателя /D, чтобы указать путь. В частности:

start /b /d "c:\Program Files\Oracle\VirtualBox\" VBoxHeadless.exe -startvm "debian604 64"

Его первый аргумент после переключения в качестве пути, даже если его цитируют, и если следующий аргумент не котируется, то это работает. Все после того, что признается в качестве программы команду/передается в качестве параметра для этой программы команду/. Примечание это не будет работать, если программа командой/имеет пробелы в имени, например Headless.exe файл VBOX, поскольку это потребует цитат и быть признанной в качестве заголовка.


В целом, первый (явный заголовок) метод, вероятно, лучше. Это был плохой выбор дизайна со стороны Microsoft, они действительно должны были добавлен переключатель для названия, а не «это первый аргумент, заключенный в кавычки?&и».

windows-7 — Как запустить программу с аргументами командной строки в Windows ‘cmd с командой’ start ‘?

start /b "" "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64"

Если вы читаете список параметров с помощью start /?:

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
      [command/program] [parameters]

    "title"     Title to display in window title bar.
    command/program
                If it is an internal cmd command or a batch file then
                the command processor is run with the /K switch to cmd.exe.
                This means that the window will remain after the command
                has been run.

                If it is not an internal cmd command or batch file then
                it is a program and will run as either a windowed application
                or a console application.

    parameters  These are the parameters passed to the command/program.

Ожидается title заключенный в кавычки ("). Поскольку путь к вашей программе включает в себя кавычки, он интерпретируется как заголовок. Добавление явного заголовка (в данном случае пустого "") работает.


Альтернативный метод — использовать ключ /d для указания пути. В частности:

start /b /d "c:\Program Files\Oracle\VirtualBox\" VBoxHeadless.exe -startvm "debian604 64"

Кажется, он принимает первый аргумент после параметра /d в качестве пути, даже если он указан в кавычках, и если следующий аргумент не указан в кавычках, это работает. Все, что распознано как команда / программа, передается в качестве параметра этой команде / программе. Обратите внимание, что это не будет работать, если в команде / программе есть пробелы в имени, например, VBox Headless.exe , поскольку для этого потребуются кавычки и они будут распознаваться как заголовок.


В целом, первый (явное название) метод, вероятно, лучше. Это был неудачный выбор дизайна со стороны Microsoft, они действительно должны были добавить переключатель для заголовка, а не «первый аргумент заключен в кавычки?».

Параметры командной строки nginx

Параметры командной строки nginx

nginx поддерживает следующие параметры командной строки:

  • -? | -h — вывод справки по параметрам командной строки.
  • -c файл — использование альтернативного конфигурационного файла файл вместо файла по умолчанию.
  • -e файл — использование альтернативного лог-файла ошибок файл вместо файла по умолчанию (1.19.5). Специальное значение stderr выбирает стандартный файл ошибок.
  • -g директивы — задание глобальных директив конфигурации, например
    nginx -g "pid /var/run/nginx.pid; worker_processes `sysctl -n hw.ncpu`;"
    
  • -p префикс — задание префикса пути nginx, т.е. каталога, в котором будут находиться файлы сервера (по умолчанию — каталог /usr/local/nginx).
  • -q — вывод только сообщений об ошибках при тестировании конфигурации.
  • -s сигнал — отправка сигнала главному процессу. Аргументом сигнал может быть:
    • stop — быстрое завершение
    • quit — плавное завершение
    • reload — перезагрузка конфигурации, старт нового рабочего процесса с новой конфигурацией, плавное завершение старых рабочих процессов.
    • reopen — переоткрытие лог-файлов
  • -t — тестирование конфигурационного файла: nginx проверяет синтаксическую правильность конфигурации, а затем пытается открыть файлы, описанные в конфигурации.
  • -T — то же, что и -t, а также вывод конфигурационных файлов в стандартный поток вывода (1.9.2).
  • -v — вывод версии nginx.
  • -V — вывод версии nginx, версии компилятора и параметров конфигурации сборки.

Как тихо запускать пакетные файлы в Windows 10

Несмотря на то, что пакетные файлы похожи на винтажные, когда дело доходит до операционных систем, они являются одним из лучших способов добиться успеха. Если вы выполняете какую-то работу, требующую ежедневного запуска некоторых заранее определенных команд, окна консоли раздражают, особенно когда вы уверены, что они идеальны, и не допустят ошибок. В этом руководстве мы узнаем, как запускать пакетные файлы без вывода сообщений в фоновом режиме и скрывать окно консоли.

Запускать пакетные файлы в Windows без вывода сообщений


Если у вас есть простой пакетный файл, который вы хотите запустить, вы можете создать другой пакетный файл и ввести команду, как показано ниже

 START/MIN CMD.EXE/C mysecondbatchfile.bat 

Есть два способа выполнить это.

  • Запустите его из командной строки.
  • Создайте ярлык на рабочем столе и наведите его на файл bat. Обязательно измените свойства ярлыка на Начать сворачиваться .

Запускать пакетные файлы без вывода сообщений, используя запланированное задание


Windows имеет множество функций, которые не используются. Планировщик заданий является одним из них. Эта функция позволяет запускать задачи в фоновом режиме, периодически или каждый день. Вы можете легко запланировать запуск командного файла автоматически, используя запланированную задачу с опциями, доступными из коробки.

Вот процедура, чтобы использовать это.

  • Введите «Task Scheduler» в поле Cortana, и вы должны увидеть приложение в списке. Вы также можете ввести «taskschd.msc» в командной строке, чтобы открыть его.
  • На последней панели справа найдите параметр, который гласит Создать базовое задание. Нажмите на него, чтобы открыть.
  • Это запускает мастера, который спросит вас
    • Наименование задачи с описанием
    • Когда вы хотите начать задание? Вы можете выбрать между Ежедневно, Еженедельно, Ежемесячно, OneTime, Когда компьютер запускается и так далее.
    • Далее выберите программу, и она предложит выбрать программу или сценарий, добавить аргументы, подробно начать и так далее.
  • Используя это, вы можете добавить все, что понадобится файлу bat. В конце выберите открытое окно свойств для дальнейшей настройки.
  • В окне свойств вы можете выбрать запуск программы, даже если пользователь вышел из системы, чтобы убедиться, что ваша программа работает круглосуточно. Обязательно выберите Скрытый.
  • Добавьте разрешение привилегий администратора, установив флажок « Запуск с самыми высокими привилегиями ». Нажмите OK, когда закончите,
  • Чтобы проверить, задача работает именно так, как вам нужно, щелкните правой кнопкой мыши и выберите «Выполнить».

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


1] Скрытый старт или HStart

Это легкая утилита командной строки, которая позволяет запускать консольные приложения и командные файлы без каких-либо окон в фоновом режиме. Он может даже обрабатывать повышение привилегий UAC, а также выполнять несколько команд параллельно или синхронно. Программа предлагает пользовательский интерфейс, который позволяет легко устанавливать вещи.

  • Перетащите пакетный файл в интерфейс.
  • Выберите параметры, в том числе скрытие окон консоли, UAC и т. Д.
  • Вы также можете проверить это, используя тестовый режим.
  • Вы также можете добавить параметры командной строки, если это необходимо.
  • Непосредственно созданный ярлык и автозапуск записи из интерфейса

Вы можете скачать здесь.

2] SilentCMD

Если вы знакомы с командной строкой, то есть набираете и используете командную строку, SilentCMD предлагает множество функций и выполняет нашу работу. Вы можете ввести SilentCMD [путь к файлу .bat] [аргументы], и он спокойно выполнит свою работу. Кроме того, вы можете войти в вывод и ошибки в текстовом файле.

  SilentCMD [BatchFile [BatchArguments]] [Параметры]
Опции:/LOG: файл :: состояние вывода в файл LOG (перезаписать существующий журнал)/LOG +: файл :: статус вывода в файл LOG (добавить в существующий журнал)/DELAY: секунд :: задержать выполнение пакетного файла на х секунд  

Вы можете скачать его с Github.

Создайте исполняемый файл из пакетного скрипта


Исполняемые файлы, вероятно, являются лучшим способом запуска командных файлов вместе с возможностью скрыть ваш скрипт от всех остальных. Существует много вариантов создания исполняемого файла из пакетного скрипта, а создание EXE-файла очень просто. Однако, если ваш антивирус его ловит, обязательно отметьте его как безопасный, поскольку вы используете его только для личного использования.

Проверьте наши подробные сообщения на следующие темы:

  • Как преобразовать BAT в EXE-файл
  • Вы можете создавать сценарии пакетных программ и компилировать их в файл .exe с помощью Batch Compiler.
  • Конвертировать VBS в EXE с помощью онлайн-инструмента или программного обеспечения для конвертации VBScript.

Кстати, Slimm Bat To Exe Converter предлагает три типа режимов: экспресс, без окон и пользовательский. Вы можете скачать его с Softpedia.

Их должно быть достаточно для создания и запуска пакетных файлов в режиме без вывода сообщений на ПК с Windows 10. Тем не менее, всегда проверяйте это, прежде чем заставить их работать спокойно. Вы никогда не хотите потерять свои данные, потому что вы не проверяли что-то должным образом.

Запуск нескольких приложений с параметрами из *.cmd — Армавир, Толстый