cmdbat批处理⽂件(⼲货)
持续更新......注意:以下是针对批处理⽂件,⾮命令⾏
进⼊D盘 >  D:
批处理文件怎么做进⼊D盘下的某个⽂件>  cd D:\QMDownload
获取当前路径>  set currentDir=%~dp0  或者  set currentDir=%cd%
返回上层⽬录>  cd ..
设置延时变量>
作⽤:读取了⼀条完整的语句之后,不⽴即对该⾏的变量赋值,⽽会在某个单条语句执⾏之后再进⾏赋值,也就是说“延        迟”了对变量的赋值,延时变量要⽤双!包起来
set a=4
set a=5&echo %a%
rem 此处输出a的结果是4
setlocal enabledelayedexpansion
set a=4
set a=5&echo !a!
rem 此处输出a的结果是5
查某个⽂件中的特定位置的内容>
实现⽅法如下:
for /f  #循环⽂件;
tokens=1  #此⾏⽤特定分隔符分隔后取第1截的值;
setlocal enabledelayedexpansion
for /f "tokens=1,* delims= " %%a in (
'findstr "proxy_pass" f'
) do (
set num1=%%b
)
替换⽂件中的内容>
echo !aa!>>"p"            #将此⾏输出到临时⽂件中
move "p" "f"        #⽤临时⽂件覆盖原⽂件
for /f "delims=" %%a in (f) do (
set aa=%%a
set aa=!aa:%num1%=toBServer;!
echo !aa!>>"p"
)
move "p" "f"
截取配置⽂件中的字符串>
下⾯是数据库的配置⽂件,如何通过bat⽂件读取⽂件中的 数据库、数据库名、⽤户名、密码?读取⽤户名和密码可以通        参照上⾯的“查某个⽂件中的特定位置的内容>”,⽽数据库和数据库名需要进⾏截取。
代码注释如下:
for /f "tokens=1,* delims=/" %%c in (      #⾸先同样⽤上⾯的“查某个⽂件中的特定位置的内容>”是取到jdbc.url的值
'findstr "jdbc.url " config.properties'        #此处是⽤/作为分割的
) do (
set url=%%d  #取到的值是127.0.0.1:1433/test;useLOBs=false
)
echo  %url%
#截取思路:该变量从第⼀个字符开始截取,到冒号为⽌,得到结果127.0.0.1
set ch=:    #设置变量,⽤:作为分隔
set strU=%url%
:nextU
if not "%strU%"=="" (  #确保字符串不为空
set /a numU+=1  #设置变量,⽤来记录长度
if "!strU:~0,1!"=="%ch%" goto lastU #变量strU这个字符串从第0个字符开始去1个字符(⾸字符)与变量ch做⽐较,等于则不再执⾏set strU1=%strU:~0,1%  #strU的⾸字符复制给strU1变量,
set strU2=%strU2%%strU1%  #strU2与strU1做拼接,赋值给strU2
set "strU=%strU:~1%"  #将strU变量的字符串截取掉⾸字符赋值给strU
goto nextU  #跳到:nextU的位置继续此步骤
)
set /a numU=0
:lastU
set server=%strU2%%strU1%  #最后做⼀此拼接
echo %server%  #得到结果127.0.0.1
#此时strU的值是1433/frsoft;useLOBs=false,思路去掉1433/,然后⽤上⾯的⽅法,截取知道分号为⽌,得到结果:test
set "strD=%strU:*/=%"  #strU字符串截取掉从⾸字符开始到第⼀个/,得到结果frsoft;useLOBs=false。再同上⽅法截取
set ch1=;
:nextD
if not "%strD%"=="" (
set /a numD+=1
if "!strD:~0,1!"=="%ch1%" goto lastD
set strD1=%strD:~0,1%
set strD2=%strD2%%strD1%
set "strD=%strD:~1%"
goto nextD
)
set /a numD=0
:lastD
set db=%strD2%%strD1%
echo %db%  #得到结果test

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。