Windows CMD自动使用特定程序运行命令
这是我的问题(与其说是真正的问题,不如说是工作流问题): 我目前正在学习如何使用symfony4,您可能知道,这个框架使用了很多PHP命令,使用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-
$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人员可能会比我回答得快得多,但我会继续尝试:)我已经在谷歌上搜索了一下,我认为“命令行”你可以