参考: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:workIOSLOG set destpath=E:workat_study :begin XCOPY %sourpath% %destpath% echo 重新复制 pause goto begin
7.call 1.调用另外一个bat 2.和goto不同,执行reUse后返回继续执行下面语句
@echo off set sourpath=E:workat_study est2.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:studyatStudyat编程.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:workat_study" set test_txt=E:workat_study1.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.csdn.net/magictong/article/details/5206546
svn help [command]即可,譬如想看看checkout的用法:svn help checkout
@echo off REM 测试svn update 注意不可以中文路径 set svnPath="D:Net-ConfigPCVesionResChrismas20161223" D: cd %svnPath% svn update pause
13.调用unity项目内一个static函数
http://blog.csdn.net/linxinfa/article/details/70914939
http://blog.csdn.net/lzdidiv/article/details/53606712
https://docs.unity3d.com/Manual/CommandLineArguments.html
@echo off set unitypath="C:Program Files (x86)UnityEditorUnity.exe" set myProjectPath=D:UnityProjectRoll-a-ballTutorial C: CD C:Program Files (x86)UnityEditor .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.7Editor .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内的程序内容