Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows CMD自动使用特定程序运行命令_Windows_Batch File_Cmd - Fatal编程技术网

Windows CMD自动使用特定程序运行命令

Windows CMD自动使用特定程序运行命令,windows,batch-file,cmd,Windows,Batch File,Cmd,这是我的问题(与其说是真正的问题,不如说是工作流问题): 我目前正在学习如何使用symfony4,您可能知道,这个框架使用了很多PHP命令,使用$PHP bin/console命令命令行 这里是我的问题:是否有任何可能的方法来配置CMD窗口,这样我就不必总是在命令名之前键入$php bin/console?最简单(也是推荐的)方法是将php bin/console加载到一个变量中,然后重用该变量 我不熟悉$php-bin/console语法,但我认为在windows脚本中,等效的语法就是php-

这是我的问题(与其说是真正的问题,不如说是工作流问题):

我目前正在学习如何使用symfony4,您可能知道,这个框架使用了很多PHP命令,使用
$PHP bin/console命令
命令行

这里是我的问题:是否有任何可能的方法来配置CMD窗口,这样我就不必总是在命令名之前键入
$php bin/console

最简单(也是推荐的)方法是将
php bin/console
加载到一个变量中,然后重用该变量

我不熟悉
$php-bin/console
语法,但我认为在windows脚本中,等效的语法就是
php-bin/console

所以你可以试试这个:

SET phpconsole=php bin/console/

"%phpconsole%Command1"
"%phpconsole%Command2"
这将导致:

"php bin/console/Command1"
"php bin/console/Command2"
您现有的windows批处理文件是什么样子的?

最简单(也是推荐的)方法是将
php bin/console
加载到变量中,然后重用该变量

我不熟悉
$php-bin/console
语法,但我认为在windows脚本中,等效的语法就是
php-bin/console

所以你可以试试这个:

SET phpconsole=php bin/console/

"%phpconsole%Command1"
"%phpconsole%Command2"
这将导致:

"php bin/console/Command1"
"php bin/console/Command2"

您现有的windows批处理文件是什么样子的?

您需要一个批处理文件来完成任务 将以下代码保存在
bin
文件夹和其他Symfony文件所在的项目文件夹中,并将其命名为
SymfonyConsole.bat

@echo off

:SymfonyConsolePrompt
set "SymfonyConsoleCommand="
echo,
set /p "SymfonyConsoleCommand=Symfony Console Command>"
for /F "tokens=*" %%C in ("%SymfonyConsoleCommand%") do set "SymfonyConsoleCommand=%%C"

if defined SymfonyConsoleCommand (
    php bin/console %SymfonyConsoleCommand%
) else (
    choice /C NY /N /M "Do you want to quit Symfony Console Prompt?[YN]"
    if errorlevel 2 exit /b
)
goto :SymfonyConsolePrompt
然后在命令提示下键入SymfonyConsole 您将得到以下提示
Symfony Console Command>
ready以获取symony控制台组件的命令


例如:
Symfony-Console-Command>server:start 0.0.0.0:8000
将自动运行
php-Console/bin-server:start 0.0.0.0:8000
,然后等待下一个symphony-Console命令,直到您点击enter而不输入任何内容,在这种情况下,您可以退出批处理文件并返回cmd提示符。

您将需要批处理归档以完成任务
@echo off
setlocal

:: Check 1st argument for help.
if "%~1" == "-h" goto :help
if "%~1" == "--help" goto :help
if "%~1" == "/?" goto :help

:: Check script arguments for program.
set _program=%*

:: If not program defined, prompt for program.
if not defined _program set /p "_program=Enter the program: "

:: If the required program is not defined then exit.
if not defined _program exit /b 1

:: Set a prompt string.
set "_prompt=%_program:"='%>"

:: Show information before start of the loop.
echo Pass arguments to '%_program%' in a loop.
echo.


:begin_loop

:: Prompt for arguments.
set "_args="
set /p "_args=%_prompt% "

:: Restart loop if no args or exit if requested.
if not defined _args goto :begin_loop
if /i "%_args:"='%" == "exit" exit /b 0

:: Clear local variables and then run the program with arguments.
setlocal
set "_prompt=" & set "_program=" & set "_args=" & %_program% %_args%
endlocal

echo.
goto :begin_loop


:help

:: Help information.
echo Pass arguments to a select program in a loop.
echo If script arguments are passed, then that will be the program.
echo If a program is not defined, then a prompt will ask for a program.
echo Variables _prompt, _program and _args are cleared with each execution.
将以下代码保存在
bin
文件夹和其他Symfony文件所在的项目文件夹中,并将其命名为
SymfonyConsole.bat

@echo off

:SymfonyConsolePrompt
set "SymfonyConsoleCommand="
echo,
set /p "SymfonyConsoleCommand=Symfony Console Command>"
for /F "tokens=*" %%C in ("%SymfonyConsoleCommand%") do set "SymfonyConsoleCommand=%%C"

if defined SymfonyConsoleCommand (
    php bin/console %SymfonyConsoleCommand%
) else (
    choice /C NY /N /M "Do you want to quit Symfony Console Prompt?[YN]"
    if errorlevel 2 exit /b
)
goto :SymfonyConsolePrompt
然后在命令提示下键入SymfonyConsole 您将得到以下提示
Symfony Console Command>
ready以获取symony控制台组件的命令

例如:
Symfony-Console-Command>server:start 0.0.0.0:8000
将自动运行
php-Console/bin-server:start 0.0.0.0:8000
,然后等待下一个symphony-Console命令,直到您点击enter而不输入任何内容,在这种情况下,您可以退出批处理文件并返回cmd提示符

@echo off
setlocal

:: Check 1st argument for help.
if "%~1" == "-h" goto :help
if "%~1" == "--help" goto :help
if "%~1" == "/?" goto :help

:: Check script arguments for program.
set _program=%*

:: If not program defined, prompt for program.
if not defined _program set /p "_program=Enter the program: "

:: If the required program is not defined then exit.
if not defined _program exit /b 1

:: Set a prompt string.
set "_prompt=%_program:"='%>"

:: Show information before start of the loop.
echo Pass arguments to '%_program%' in a loop.
echo.


:begin_loop

:: Prompt for arguments.
set "_args="
set /p "_args=%_prompt% "

:: Restart loop if no args or exit if requested.
if not defined _args goto :begin_loop
if /i "%_args:"='%" == "exit" exit /b 0

:: Clear local variables and then run the program with arguments.
setlocal
set "_prompt=" & set "_program=" & set "_args=" & %_program% %_args%
endlocal

echo.
goto :begin_loop


:help

:: Help information.
echo Pass arguments to a select program in a loop.
echo If script arguments are passed, then that will be the program.
echo If a program is not defined, then a prompt will ask for a program.
echo Variables _prompt, _program and _args are cleared with each execution.
这与我在上发布的相同,只是有一行 已删除为设置ANSI转义提示的。对此表示怀疑 如果发布,站点将保持控件字符的完整性

我将其命名为loop.cmd并将其放置在路径中(请参见注释)。它是为任何人设计的 命令是普遍的

使用:

loop command
然后,您将得到一个包含命令的提示,即

command>
您现在在提示符处键入的内容将以 命令和执行

您只需键入
exit
即可结束循环

根据您的代码使用示例:

loop php bin/console
然后在提示下添加命令:

php bin/console> command
虽然我使用批处理文件,但Python版本也存在 因为它保持自动完成等


注:

我提到的路径是脚本可以在系统上找到文件的地方。
路径中的路径
环境变量或当前 工作目录

建议创建文件夹路径,即
%SystemDrive%\bin
并添加 将其添加到系统变量
PATH
,您的
PATH
合适的位置 可以存储脚本。或者您可以将脚本添加到 变量
路径中的现有目录
将自己的目录添加到
路径

这与我在上发布的相同,只是有一行 已删除为设置ANSI转义提示的。对此表示怀疑 如果发布,站点将保持控件字符的完整性

我将其命名为loop.cmd并将其放置在路径中(请参见注释)。它是为任何人设计的 命令是普遍的

使用:

loop command
然后,您将得到一个包含命令的提示,即

command>
您现在在提示符处键入的内容将以 命令和执行

您只需键入
exit
即可结束循环

根据您的代码使用示例:

loop php bin/console
然后在提示下添加命令:

php bin/console> command
虽然我使用批处理文件,但Python版本也存在 因为它保持自动完成等


注:

我提到的路径是脚本可以在系统上找到文件的地方。
路径中的路径
环境变量或当前 工作目录

建议创建文件夹路径,即
%SystemDrive%\bin
并添加 将其添加到系统变量
PATH
,您的
PATH
合适的位置 可以存储脚本。或者您可以将脚本添加到 变量
路径中的现有目录
将自己的目录添加到
路径


谢谢你的回答,但我想我还不够清楚。我直接从命令提示符下运行命令,没有使用任何批处理文件。更准确地说,我在一个目录中工作,其中包含我所有的Symfony文件。其中一个名为“bin”的文件夹包含一个名为“console”的文件(没有任何扩展名)。因此,我在我的项目文件夹中运行命令提示符,并调用php来运行这个带有一些参数的“bin/console”文件(例如“条令:数据库:创建”)。我的目的是让我的Cmd promp to alwas用“php bin/console”运行我的命令。symfony或php人员可能会比我回答得快得多,但我会继续尝试:)我已经在谷歌上搜索了一下,我认为“命令行”你可以