批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD。这些命令统称批处理命令。
小知识:可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程。
运行脚本时提示:
'C:\Program' 不是内部或外部命令
网上查了一下原因是Program Files中间有空格,导致了该路径被作为一条命令被执行了.
解决方法是给Program Files加上双引号
(""),或者是改成program~1。【经测试单引号('')通过不了。】
::@echo off
:: 这个是注释
"D:/Program Files/123.exe" -c "D:\Program Files\121.ini"
::echo end
::pause
安装composer(php 可执行文件在环境变量目录下):
echo @php "%~dp0composer.phar" %*>composer.bat
在 composer.phar
同级目录下新建文件 composer.bat
。文件内容为:@php "%~dp0composer.phar" %*
"%~dp0composer.phar" 加不加引号,命令都能正常执行。
@
: @
符号后的命令内容
不显示,但命令执行完毕返回的内容
正常显示。%~dp0
: %~dp0代表的是bat文件所在的文件目录,强调bat的文件位置 ->盘符展开后是不可改变的%cd%
: 代表的是执行文件的当前目录,强调bat是在哪里启动的;->盘符展开后是可改变的%*
: 调用bat命令时,外部传入的命令参数
获取用户输入和条件判断
::下面是获取用户输入和条件判断的示例代码
chcp 65001
@echo off
::测试过这边"%input%"是大小写敏感的, 并且设置默认值为y
set input=y
set /p input=是否下载谷歌浏览器?(下载请输入y,不下载请输入n):
set base_url=https://www.mygoogle.com
set chrome_url=%base_url%/chrome.zip
::if /I "%input%"=="y" (
if /I %input% NEQ n (
echo 不下载谷歌浏览器......
) else (
echo 下载谷歌浏览器%chrome_url%......
)
echo %input%
@pause
/P
获取用户输入存入变量/I
变量忽略分大小写赋值等号=两边不能有空格
, 括号()前后必须加空格.%input%
变量和字符串n
比较时,要么两个都加引号,要么都不加引号。如"%input%"=="n"
或 %input%==n
变量赋值示例:
set varA=这个是字符串
echo %varA%
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
非(not)
@echo off
set /p age=你的年龄:
if not %age% gtr 18 (
echo 小屁孩
goto end
)
echo 你成年了
:end
pause
与(and)
在批处理中并没有提供 “与” 操作符,需要自己通过多个 if 语句去模拟。
实例:根据用户输入的年龄判断用户是否在20~40岁之间。
@echo off
set /p age=你的年龄:
if %age% geq 20 (
if %age% leq 40 (
echo 努力,加班哦...
goto end
)
)
echo 洗洗睡觉吧
:end
pause
或(or)
实例:根据用户输入的年龄判断,年龄小于18或者大于60岁的可以领取福利
@echo off
set /p age=你的年龄:
if %age% lss 18 goto weal
if %age% gtr 60 goto weal
goto end
:weal
echo 来哦!领取福利
:end
pause
'C:\Program' 不是内部或外部命令,也不是可运行的程序问题的解决方案 https://blog.csdn.net/yoga0617/article/details/81629666
bat命令入门与高级技巧详解 https://www.jb51.net/article/97204.htm
windows 批处理脚本编写 https://www.cnblogs.com/hugb/articles/7410325.html
windows脚本-CMD和Batch https://www.cnblogs.com/dawnminghuang/p/4401669.html
Windows下的bat文件的@echo off 作用