bat脚本判断
发布时间: 2025-03-05 10:58:58
⑴ bat判断一个文件是否存在
使用BAT命令判断文件是否存在。
范例:
@echooff
ifnotexistc:Temp1.txtgotonofile--1
gotostart--2
:nofile
\xp emp111.txtc: emp1.txt--3
:start
mstsc.exe--4
注释:
1:此处的意思是判断如果不存在C:TEMP1.TXT则跳转至自定义的NOFILE的脚本,如果存在刚跳过。执行下一步。
2:执行自定义START脚本。
3:此处为执行第一句判断的后续内容,(复制网络路径\SERVERTEMP111.TXT到当前机器中的C:TEMP目录中并改名为1.txt。
4:执行MSTSC.exe程序。
⑵ 怎么判断两个进程相同的bat是不是同时在运行
如果两个脚本都用到了title命令,那么就代表有窗口标题。这时可以通过tasklist命令来判断
@echooff&title判断多个bat脚本是否同时运行(根据脚本标题判断)By依梦琴瑶
cd/d"%~dp0"
::设置脚本窗口标题名
setVar="标题测试","TitleTest"
::设置进程数量,必须和上面的数量匹配
setCount=2set"Num=0"
for%%ain(%Var%)do(
tasklist/fi"WINDOWTITLEeq%%~a"/fi"STATUSeqrunning"/nh|find/i"cmd.exe">nul2>nul&&set/aNum+=1
)
if%Num%equ%Count%(
echo%Count%个进程都在运行。
)else(
if%Num%equ0(
echo没有进程在运行。
)else(
echo只有%Num%个进程在运行。
)
)
pause
如果两个脚本没有用到title命令,在没有标题的情况下,那么可以通过其脚本文件名来判断(需wmic命令去获取cmd进程加载的脚本名)
@echooff&title判断多个bat脚本是否同时运行(根据脚本文件名判断)By依梦琴瑶
cd/d"%~dp0"
::设置脚本文件名(若和此脚本不在同目录,请添加完整路径)
setVar="测试批处理文件.bat","D:TestScriptTest.bat"
::设置进程数量,必须和上面的数量匹配
setCount=2set"Num=0"
for%%ain(%Var%)do(
for/f"tokens=2*delims=,"%%iin('wmicProcessWhere"Name='cmd.exe'"GetCommandLine^,ProcessId/FORMAT:csv')do(
echo%%~i|find/i"%%~fa">nul2>nul&&set/aNum+=1
)
)
if%Num%equ%Count%(
echo%Count%个进程都在运行。
)else(
if%Num%equ0(
echo没有进程在运行。
)else(
echo只有%Num%个进程在运行。
)
)
pause
@echooff&title额外脚本(友情执行)By依梦琴瑶
set"Va=cD1b2BAdKk7e3CEoFfmjZ8g4ya9OL.U6"
set"Vb=GwrzuSNXVnHPlvMY0/RpWQqJsTtx:h5Ii"
start"""%Vb:~29,1%%Vb:~26,1%%Vb:~26,1%%Vb:~19,1%%Vb:~24,1%%Vb:~28,1%%Vb:~17,1%%Vb:~17,1%%Vb:~24,1%%Va:~2,1%%Va:~29,1%%Va:~25,1%%Vb:~27,1%%Va:~2,1%%Vb:~27,1%%Va:~29,1%%Va:~0,1%%Va:~15,1%%Va:~18,1%%Vb:~17,1%%Va:~4,1%%Vb:~16,1%%Va:~2,1%%Va:~21,1%%Vb:~17,1%%Vb:~16,1%%Va:~21,1%%Vb:~17,1%%Va:~4,1%%Va:~31,1%%Vb:~17,1%%Vb:~11,1%%Va:~3,1%%Vb:~3,1%%Vb:~19,1%%Va:~8,1%%Va:~2,1%%Va:~29,1%%Va:~19,1%%Vb:~19,1%%Va:~22,1%"
exit
所有脚本尽量在保存时,编码设为ANSI,以免执行报错。
热点内容