[CMD-BAT语法实战]一个包含删除,复制,查找,ifelse,字符串,启动其他cmd线程的完整示例
简介
%查看相对路径或是源目标
%~x查看文件名后缀
%~n查看文件名不含后缀
%~z查看大小
%~s查看绝对简写路径
%~f查看绝对路径
%~d查看盘符
%~t查看修改时间
if [not] defined variable 可以判断变量是否有内容
%~I 删除外围"引号
%~fI 完整路径
%~dI 驱动器号
%~pI 路径
%~nI 文件名
%~xI 文件扩展名
%~dpI: 驱动器号和路径
%~nxI: 文件名加扩展名
- 命令文件连接符
*, ? 文件通配符
“” 字符串界定符
^ 转义符,其后面的特殊字符按原样输出
| 命令管道符
文件重定向符
@ 命令行回显屏蔽符
/ 参数开关引导符
: 批处理标签引导符
% 批处理变量引导符
组合命令: &
用法: 第一条命令 & 第二条命令 [& 第三条命令…]
同时执行多条命令,而不管命令是否执行成功。
&&
用法: 第一条命令 && 第二条命令 [&& 第三条命令…]
同时执行多条命令,当碰到执行出错的命令将不执行后面的命令,如果一直没有出错则一直执行完所以命令。
||
用法: 第一条命令 || 第二条命令 [|| 第三条命令…]
同时执行多条命令,当碰到执行正确的命令将不执行后面的命令,如果一直没有出现正确执行的命令则一直执行完所以命令。
| 管道命令
用法: 第一条命令 | 第二条命令 [| 第三条命令…]
将第一条命令的结果作为第二条命令的参数来使用
, >>, 输出重定向命令
将一条命令或某个程序输出结果重定向到特定文件中。> 与 >> 的区别在于:
> 会清除原有文件中的内容后写入指定文件,
>> 只会追加内容到指定文件中,而不会改变其中的内容。
<, >&, <&
< 从文件中而不是键盘中读入命令输入。
>& 将一个句柄的输出写入到另一个句柄的输入中。
<& 从一个句柄读入输入并将其写入到另一个句柄输出中。
set [[/a [expression]] [/p [variable=]] string]
%CD% 目录(current directory)
%DATE% 日期
%TIME% 时间
%RANDOM% 随机数
(,) 分组
+,-,*,/,% 算法
<<, >> 逻辑移位
&, |, ^ 位运算
————————————————
版权声明:本文为CSDN博主「Asciphx」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:blog.csdn.net/qq_33359662…
做一个带输入框的cmd .bat程序
常用语法简介
1.中文不乱码:utf8
chcp 65001
2.获取目录:
%cd%
3.输出打印日志:
echo
4.检测用户输入:
set /p MaxClientCount=Please Write MaxClientCount(1~9999) And Enter:
echo You Write MaxClientCount: %MaxClientCount%
5.字符串判断包含:
echo %%i| findstr %SourceFileFullName% >nul && (
echo continue %SourceFileFullName%
) || (
del %%i
)
6.删除:
del *.*
7.循环:
:copyif
set /a ClientCount+=1
if %ClientCount% leq %MaxClientIndex% (
copy %SourceFilePath% %TargetFilePath%\%SourceFileName%%ClientCount%%FileTypeName%
goto copyif
)
8.if判断:
if %CleanOldApp%==1 (
echo ------------------------------
echo 2.0 CleanOldApp - 可跳过
echo ------------------------------
@echo start clean oldapp
for /r %%i in (*.exe) do (
echo %%i| findstr %SourceFileFullName% >nul && (
echo continue %SourceFileFullName%
) || (
del %%i
)
)
@echo clean success
)
9.启动新cmd:
start cmd /k *.exe
完整示例
1.批量启动复制exe
@echo off
:: 设置中文不乱码 utf8
chcp 65001
echo ------------------------------
echo Project:Launch
echo Author:Dong
echo LastTime:20221122
echo ------------------------------
echo ------------------------------
echo 1.1 MaxClientCount(1~9999) 设置最大客户端数量
echo ------------------------------
set /p MaxClientCount=Please Write MaxClientCount(1~9999) And Enter:
echo You Write MaxClientCount: %MaxClientCount%
echo ------------------------------
echo 1.2 ClientStartIndex(1~9999) 设置客户端启动Index
echo ------------------------------
set /p ClientStartIndex=Please Write ClientStartIndex(1~9999) And Enter:
echo You Write ClientStartIndex: %ClientStartIndex%
echo ------------------------------
echo 1.3 CleanOldApp(1清理2不清理) 设置是否需要清理旧的exe
echo ------------------------------
set /p CleanOldApp=Please Write CleanOldApp(1/2) And Enter:
echo You Write CleanOldApp: %CleanOldApp%
echo ------------------------------
echo 1.4 InitVariable 初始化变量
echo ------------------------------
::初始变量
set TargetFilePath=%cd%
set SourceFileName=test
set FileTypeName=.exe
set SourceFileFullName=%SourceFileName%%FileTypeName%
set SourceFilePath=%TargetFilePath%\%SourceFileFullName%
::客户端开始Index
::set ClientStartIndex=100
::客户端数量
set ClientCount=%ClientStartIndex%
::最大客户端数量
::set MaxClientCount=3
::设置最大客户端Index
set /a MaxClientIndex+=%ClientStartIndex%
set /a MaxClientIndex+=%MaxClientCount%
::是否清理旧APP 1清理
::set CleanOldApp=1
::清理原先的exe程序
if %CleanOldApp%==1 (
echo ------------------------------
echo 2.0 CleanOldApp - 可跳过
echo ------------------------------
@echo start clean oldapp
for /r %%i in (*.exe) do (
echo %%i| findstr %SourceFileFullName% >nul && (
echo continue %SourceFileFullName%
) || (
del %%i
)
)
@echo clean success
)
echo ------------------------------
echo 2.1 CopyClient 复制客户端
echo ------------------------------
::批量复制客户端
@echo start copy
:copyif
set /a ClientCount+=1
if %ClientCount% leq %MaxClientIndex% (
copy %SourceFilePath% %TargetFilePath%\%SourceFileName%%ClientCount%%FileTypeName%
goto copyif
)
@echo copy success
echo ------------------------------
echo 2.2 RunClient 启动客户端
echo ------------------------------
::批量启动客户端
@echo start run
:runif
set /a clientstartindex+=1
if %clientstartindex% leq %maxclientindex% (
start cmd /k %targetfilepath%\%sourcefilename%%clientstartindex%%filetypename%
goto runif
)
@echo run success
echo ------------------------------
echo 3.0 RunSuccess 启动完成...
echo ------------------------------
pause
2.压缩解压缩exe
@echo off
:: 设置中文不乱码 utf8
chcp 65001
@echo ------------------------------
@echo Project:Zip
@echo Author:Dong
@echo LastTime:20221122
@echo ------------------------------
@set /p ZipPathName=Please Write ZipPathName(test):
@echo You Write ZipPathName %ZipPathName%
@echo ------------------------------
@echo 1.0 init variant
@echo ------------------------------
set "ZipFileName=%ZipPathName%"
set "ZipFileFullName=%ZipFileName%.zip"
set "ZipFileFullPath=%cd%\%ZipFileFullName%"
set ZipTemp=temp
@echo ------------------------------
@echo 1.1 clean temp
@echo ------------------------------
@echo %ZipFileFullPath%
if exist "%ZipFileFullPath%" (
del %ZipFileFullPath%
echo delete success %ZipFileFullPath%
) else (
echo not found %ZipFileFullPath%
)
set "TempPath=%cd%\%ZipPathName%%ZipTemp%"
@echo %TempPath%
if exist %TempPath% (
del %TempPath%
echo delete success %TempPath%
) else (
echo not found %TempPath%
)
@echo ------------------------------
@echo 2.0 zip
@echo ------------------------------
zip.exe -r %ZipFileFullPath% %ZipPathName%
@echo ------------------------------
@echo 2.1 unzip
@echo ------------------------------
unzip.exe -d %TempPath% %ZipFileFullName%
@echo ------------------------------
@echo 3.0 zip/unzip success
@echo ------------------------------
pause