批处理应用

it2025-07-25  11

@echo off set name=%~nx0 set name=%name:.bat=% echo ==================================== @echo 生成考勤文件 rem "%str%"=="" 有空字符会报错,应改为 [%1]==[] rem 1、判断是否为拖拽方式打开 if [%1]==[] ( echo ==================================== rem jump point (跳转点) :loop set /p fileName=请将需要处理的EXCEL拖拽到此窗口,并按回车键: goto start ) else ( rem 2、以拖拽的方式获取文件全路径 set fileName=%~1 echo ==================================== ) :start rem 3、如果输入为空就重新拖拽,不存在也是一样 rem 兼容替换 set tempFileName=%fileName: =hello% rem tempFileName里面只包含 =hello 说明fileName为空值 if "%tempFileName%"==" =hello" ( goto loop ) rem 4、设置要处理人的姓名 set name=%~nx0 rem 5、处理的考勤人从文件名获取 set name=%name:.bat=% echo 解析文件为:%fileName% set fileName=%fileName: =hello% echo 姓名:%name% rem 6、当xml文件和运行脚本不在同一盘中时,需要切换盘符 %~d0:获取执行文件所在的盘符 rem %~d0 rem 7、打开执行文件路径 /d 可以切换盘符 cd /d "%~dp0" rem 8、将文件fileName 和name 传到里面去 java -cp .;kaoqin.jar;lib/*; com.KaoQin "%fileName%" "%name%" pause

以上涉及到两个变量:

1、要处理的人员名称:写在批处理的文件名上,用脚本截取获取 

2、要处理的文件名称:拖拽文件到批处理文件上处理

 

bat名为:张三.bat 

1、可以将要处理的文件拖到  张三.bat

2、也可以双击张三.bat 然后将要处理的文件拖拽到dos窗口

以上是自己做的考勤 处理小工具,具体的逻辑处理写在java代码里面,从批处理文件获取到要处理人员的名称:张三

以上之所以写的比较复杂,是因为兼容了传入的参数为空,以及传入的文件路径上有空值导致的闪退问题,关于这两种问题,查了好久才搞定,

 

最新回复(0)