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

时间:2018-07-05 02:38:58

标签: windows batch-file cmd

这是我的问题(更多的是工作流程的问题,而不是实际的问题):

我目前正在学习如何使用Symfony 4,并且您可能知道,该框架通过$ php bin/console command命令行在PHP中使用了很多命令。

这是我的问题:是否可以配置CMD窗口,所以我不必总是在命令名之前键入$ php bin/console

3 个答案:

答案 0 :(得分:1)

您将需要一个批处理文件来完成您的任务 将以下代码保存在 Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load Dim dt As New DataTable("Dt") dt.Columns.Add("test1") dt.Columns.Add("test2") dt.Columns.Add("test3") GridView1.DataSource = dt GridView1.DataBind() ViewState("DataSource ") = dt End Sub Protected Sub btnadd_Click(sender As Object, e As EventArgs) Handles btnadd.Click Dim dt As DataTable = DirectCast(ViewState("DataSource "), DataTable) GridView1.DataSource = dt GridView1.DataBind() dt.Rows.Add("Hi1", "Hi2", "Hi2") GridView1.DataSource = dt GridView1.DataBind() End Sub 文件夹和其他Symfony文件所在的项目文件夹中,并将其命名为bin

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的准备,以获取Sympony控制台组件的命令。

ex:Symfony Console Command>将自动运行Symfony Console Command>server:start 0.0.0.0:8000,然后等待下一个Sympony控制台命令,直到您按Enter键而不输入任何内容为止,在这种情况下,您可以退出批处理文件并返回到cmd提示符。

答案 1 :(得分:0)

最简单(也是推荐的方法)是将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批处理文件是什么样的?

答案 2 :(得分:0)

@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.

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

我将其称为loop.cmd并将其放置在 PATH 中(请参见)。它是为任何 命令如此普遍。

要使用:

loop command

然后您将在提示符下输入命令,即

command>

现在在提示符下键入的内容将带有前缀 命令并执行。

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

根据您的代码使用示例:

loop php bin/console

然后在提示符下添加您的命令:

php bin/console> command

尽管我使用批处理文件,但也存在Python版本 因为它会保持自动完成等。


注意:

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

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

How to set the path and environment variables in Windows