@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代码里面,从批处理文件获取到要处理人员的名称:张三
以上之所以写的比较复杂,是因为兼容了传入的参数为空,以及传入的文件路径上有空值导致的闪退问题,关于这两种问题,查了好久才搞定,