Bat批处理脚本
⚽⚽如果巅峰留不住⚽⚽
🏀🏀那就进厂包吃住🏀🏀
经验分享1:Bat脚本启动jar包,不显示黑窗口.
经验分享2:Bat批处理脚本.
经验分享3:Windows Server 开机启动jar.
经验分享4:jar包将文件移到C盘Failed.
1.注释
- 1、:: 注释内容(第一个冒号后也可以跟任何一个非字母数字的字符)
- 2、rem 注释内容(不能出现重定向符号和管道符号)
- 3、echo 注释内容(不能出现重定向符号和管道符号)〉nul
- 4、if not exist nul 注释内容(不能出现重定向符号和管道符号)
- 5、:注释内容(注释文本不能与已有标签重名)
- 6、%注释内容%(可以用作行间注释,不能出现重定向符号和管道符号)
- 7、goto 标签 注释内容(可以用作说明goto的条件和执行内容)
- 8、:标签 注释内容(可以用作标签下方段的执行内容)
2.@echo off
@echo off的意思是关闭回显,不显示正在执行的批处理命令及执行的结果等。
注:前几次测试代码的时候要注释掉这行,待程序跑顺了再打开。
3.以管理员权限运行
1.1将下面的命令置顶
@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close) && exit
4.cd command
1.如果bat script在D盘,要cd到E盘/C盘
切记:直接cd是跑不通的
c:
cd C:\Program Files (x86)\Baofeng\StormPlayer
echo this is test
pause
2.以管理员权限运行,在C盘内切换
@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close) && exit
:: 如果想回到盘符顶
cd ../../.. (或者) cd /
cd C:\Program Files (x86)\Baofeng\StormPlayer
echo this is test
pause
5.获取当前日期的时间戳
@echo off
set "$=%temp%\Spring"
>%$% Echo WScript.Echo((new Date()).getTime())
for /f %%a in ('cscript -nologo -e:jscript %$%') do set timestamp=%%a
del /f /q %$%
echo %timestamp%
6.逻辑运算符
- &可以用到多条命令的连接符号,顺序执行,即无论前面命令是否报错,都会顺序执行,
Demo1:3条都会执行
start command 1 & start command 2 & start command 3
- &&连接符会带有逻辑判断,只有前面命令执行成功了,才会执行其后的命令,执行失败的命令之后的其他任何命令都不会被执行。
Demo2:一旦有错,停止执行
start command 1 && start command 2 && start command 3......
- ||连接符可以同时执行多条命令,无论有多少个命令并存,只要多条命令中有一个命令被正确执行,其他的任何命令都不会被执行,即使是正确的
Demo3:一旦执行成功一个,后面的都不执行
start command 1 || start command 2 || start command 3......
7.跳过UAC
用户账户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。
即普通账户提升为管理员进行一系列操作,就会弹窗提示。
感谢博主开源,好人一生平安。哈哈。菜鸟膜拜
原文链接: UAC 白名单的小工具.
Github链接: https://github.com/XIU2/UACWhitelistTool/releases.
国内下载蓝奏云链接: https://pan.lanzoui.com/b073m0dne.
我的是Bat Script,就比价麻烦,先创建快捷方式,添加到UAC白名单
添加成功后,会出现一个以noUAC开头的新图标
7.1用java运行exe,bat
public void executeBat() {
try {
Runtime mt = Runtime.getRuntime();
String cmd = "E:\\ImportMetapediaCMD\\noUAC.CreateMetapedia.exe";
Process pro = mt.exec(cmd);
pro.waitFor();
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
7.2用java运行快捷方式(lnk)
@Test
void test() {
try {
Process pro = Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " +
"E:\\Re-Architecture\\test.lnk");
pro.waitFor();
// String cmd = "E:\\Re-Architecture\\test.lnk";
}catch (Exception e){
e.printStackTrace();
}
}
8.删除日志
1.删除指定目录
::@echo off
rem specifical file path
set SrcDir=f:\Test\1\
rem day
set DaysAgo=1
echo delete all log below this directory
forfiles /p %SrcDir% /s /m *.xlsx /d -%DaysAgo% /c "cmd /c del @path"
//单纯一点
::删除指定目录下7天前的文件(目录为C:\test):
::forfiles /p c:\test /s /m *.* /d -7 /c "cmd /c del @path"
2.删除Bat脚本同级目录下的文件
::删除批处理文件当前目录下7天前的文件:
::forfiles /p %~dp0 /s /m *.* /d -7 /c "cmd /c del @path"