参考:https://zhidao.baidu.com/question/111737455.html
好纠结 在notepad上看还可以高亮,在博客园里看都是灰蒙蒙的一片。。
注意 使用 echo/?命令 cmd查询使用方法
1. @echo off
@ 不显示后面的命令 echo off 不显示命令信息 echo或者echo on 显示后面的信息
2.goto 跳跃
@echo off
echo 你好
REM xxx
goto likeu
echo 跳过了
:likeu
echo next
pause
3.set /a 和 set/p 注意使用set时,最好下面空出一行来。不空出一行会运行错误,不知道原因。
set /a 执行数学计算 set/p提示输入
@echo off
echo 加法
set /p b=输入:
echo %b%
set /a a=2*%b%
echo %b%+%b%=%a%
pause
4.start 开启
@echo off
start cmd
start www.baidu.com
pause
5.title 标题
@echo off
title =============begin==============
echo 测试标题
pause
6. copy文件夹直接目录下的文件到另外文件夹下面 并通过goto重复复制(copy不能复制所有文件,只是这个子目录下对应的文件。深层次的文件没有复制)
@echo off
set sourpath=E:\work\IOSLOG
set destpath=E:\work\bat_study
:begin
XCOPY %sourpath% %destpath%
echo 重新复制
pause
goto begin
7.call 1.调用另外一个bat 2.和goto不同,执行reUse后返回继续执行下面语句
@echo off
set sourpath=E:\work\bat_study\test2.bat
echo 本bat
call %sourpath%
call :reUse
echo 1
:reUse
echo 2
pause
8.choice 进行条件选择 (可以使用 set赋值 if equ 进行功能替换)
@echo off
choice /c:123 /m:"选择123"
if %errorlevel%==1 goto one
if %errorlevel%==2 goto two
if %errorlevel%==3 goto three
:one
echo 1
pause
:two
echo 2
pause
:three
echo 3
pause
pause
9.if 条件判断
其中 errorlevel参考:http://www.jb51.net/article/7525.htm
@echo off
REM 参考:http://www.xue51.com/tuwen/4454.html
REM --BEGIN--判断输入的数据和3是否相同
set /p test_1="输入数据"
if %test_1% equ 3 ( echo test_1 等于3 ) else ( echo test_1 不等于3 )
REM --END
REM --BEGIN--判断是否有这个文件
set test_2="D:\study\batStudy\bat编程.doc"
if exist %test_2% ( echo 有这个文件 ) else ( echo 没这个文件 )
REM --END
REM --BEGIN--判断变量是否被赋值
set test_3=3
if defined test_3 ( echo 被赋值了 为%test_3%) else ( echo 没有被赋值)
REM --END
REM --BEGIN--和errorlevel的结合使用(测试上一个命令的执行结果,返回值必须从大到小判断)
REM errorlevel 为环境变量命令执行的结果 默认为0(成功)
ping www.baidu.com
if errorlevel 1 echo ping百度失败
if errorlevel 0 echo ping百度成功成功
REM --END
pause
10.for的使用
http://www.cnblogs.com/DswCnblog/p/5435300.html
@echo off
set test_path="E:\work\bat_study"
set test_txt=E:\work\bat_study\1.txt
REM --BEGIN--for /f 进行文本处理--
REM 按行读取文本的内容: &pause可以每行中断输出
for /f %%i in ( %test_txt% ) do ( echo %%i&pause)
REM 截取每行字符串,只显示字符串前面的内容 delims= 使用tokens定点提取
echo 截取字符串:
for /f "delims=,." %%i in ( %test_txt% ) do ( echo %%i )
REM 跳过某些行 skip
echo 跳过第一行:
for /f "skip=1" %%i in ( %test_txt% ) do ( echo %%i )
REM 忽略以指定字符开头的行 "eol="
echo 忽略以,开头的行
for /f "eol=," %%i in ( %test_txt% ) do ( echo %%i )
REM --END--
pause
11.时间: 注意set赋值时左右不能有空格 会赋值失败
@echo off
echo %data%
echo %date:~0,4%
echo %date:~5,2%
echo %date:~8,2%
echo %time%
echo %time:~0,2%
echo %time:~3,2%
echo %time:~6,2%
set THISDATETIME=%date:~0,4%%date:~5,2%%date:~8,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
echo %THISDATETIME%
pause
12. svn的使用
参考:http://blog.youkuaiyun.com/magictong/article/details/5206546
svn help [command]即可,譬如想看看checkout的用法:svn help checkout
@echo off
REM 测试svn update 注意不可以中文路径
set svnPath="D:\Net-Config\PCVesionRes\Chrismas20161223"
D:
cd %svnPath%
svn update
pause
13.调用unity项目内一个static函数
http://blog.youkuaiyun.com/linxinfa/article/details/70914939
http://blog.youkuaiyun.com/lzdidiv/article/details/53606712
https://docs.unity3d.com/Manual/CommandLineArguments.html
@echo off
set unitypath="C:\Program Files (x86)\Unity\Editor\Unity.exe"
set myProjectPath=D:\UnityProject\Roll-a-ballTutorial
C:
CD C:\Program Files (x86)\Unity\Editor
.\Unity.exe -projectPath %myProjectPath% -quit -batchmode -executeMethod PickupRotate.TestBatFun
echo 结束
pause
启动参数形式进行 传参:其中调用System.Environment.GetCommandLineArgs(); 进行解析参数。
@echo off
set myProjPath=D:\DevVersion
set MethodName=CharacterContainer.TestBat
D:
cd D:\Program Files (x86)\Unity4.7\Editor
.\Unity.exe -quit -batchmode -projectPath %myProjPath% -executeMethod %MethodName% -myName LZ
echo over..............
pause
%UNITY_PATH% -batchmode -logFile buildlog.txt -projectPath %PROJECTRES_PATH_RES% -executeMethod ProjectBuild.BuildAndroidRes -quit
2018年5月29日 20:01:54记录:
如果类添加了命名空间,
-executeMethod 后类名称前需要添加好具体的命名空间,否则bat batchmode会把unity项目都搜索一遍。。。然后。。打开unity项目还要重新导入资源了。。
dir的使用
自测:实现以下功能:
1.复制一个文件夹的所有文件到另外一个文件夹中去
2.调用项目中某个函数接口执行
3.调用unity的打包命令
4.更新指定路径下的svn
5.读取一个ini文件 来进行开机自动启动ini内的程序内容