:: 使用延迟变量,这样for in 循环里面才能设置变量,并且用!变量!来调用变量
:: 否则for in 里面的变量将不生效
@ECHO off & setlocal EnableDelayedExpansion
:: 声明采用UTF-8编码,以防中文乱码
chcp 65001
:: 要复制文件的目标文件夹
set TargetFile=C:\Users\Administrator\Desktop\packed\file
:: 被复制的文件夹
set cPath=F:\personal-code\gtow
:: 总共copy了几个文件,仅当该值是数值类型时,才可以使用【/A】,才能正确的进行数值计算,否则会被当做字符串进行计算
set /a num=0
:: 在进行复制文件之前先清空文件夹,第一步删除子文件,第二步删除空文件夹
del /f /s /q %TargetFile%*.*
rd /s /q %TargetFile%
:: 遍历文件,并且复制到目标文件
for /f "delims= " %%i in (test.txt) do (
set /a num+=1
:: 接收text里面的路径
set oPath=%%i
:: 替换源路径的值
set rPath1=!oPath:\src\main\java=\target\classess!
:: 输出的内容是
:: rPath1=common-entity\target\classess\com\yby\common\entity\SimpleWebsite.java
echo rPath1=!rPath1!
:: 将.java后缀名修改为*.class后缀名,因为java文件编译后可能有多个.class文件
set rPath2=!rPath1:.java=*.class!
:: 通过%%~pi获得被copy文件的路径,这个会获取全路径
set rPath3=%%~pi
:: 结果:rPath3=C:\Users\Administrator\Desktop\common-entity\src\main\java\com\yby\common\entity\
:: 如果是%%~pi,那么结果如下:
:: rPath3=\Users\Administrator\Desktop\common-entity\src\main\java\com\yby\common\entity\
echo rPath3=!rPath3!
:: 以下可以用变量来代替 set str=\Users\Administrator\Desktop\
:: set rPath4=!rPath3:%str%=! 在!!里面通过%%来调用变量
set rPath4=!rPath3:\Users\Administrator\Desktop\=!
echo rPath4=!rPath4!
:: 创建目录和子目录
md %TargetFile%\!rPath4!
xcopy /e/c/h/z/Y %cPath%\%%i %TargetFile%\!rPath4!
)
:: 打包
cd %TargetFile%
jar cvf file.war *
echo 打包完成,总共复制了%num%个文件
pause
@echo off & setlocal EnableDelayedExpansion
chcp 65001
set a=55544333
set c=6666dfsfds
set b=44
for %%i in (a,b,c) do (
// if 判断语句如下
echo %a%| findstr %b% >nul && (
echo %a% 包含 %b%
) || (
echo %a%not content%b%
)
echo %c%| findstr %b% >nul && (
echo %c% 不包含%b%
) || (
echo %c%not content%b%
)
)
pause
网友评论