bat批处理笔记

参考: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内的程序内容

改变自己
原文地址:https://www.cnblogs.com/sun-shadow/p/7498172.html