本帖最后由 pcl_test 于 2016-11-17 18:37 编辑
遇到非常诡异的问题 恳请高人解惑!- ::记录写入文件的数目
- set num=0
- ::x值为0表示bak文件存在,y初值为0表示xls与bak无相同文件,y值为1表示有文件相同
- dir "%~dp0backup\*.bak" 1>nul 2>nul
- set x=!errorlevel!
- for /r %%a in (*.xls) do (
- set y=0
- if %x%==0 (
- call :fileCompare "%%a"
- if !y!==0 (
- cscript //nologo main.vbs "%%a"
- copy "%%a" "%~dp0backup\!date!-!time:~0,2!-!time:~3,2!-!time:~6,5!.bak" 1>nul 2>nul
- set /a num+=1
- )
- ) else (
- cscript //nologo main.vbs "%%a"
- copy "%%a" "%~dp0backup\!date!-!time:~0,2!-!time:~3,2!-!time:~6,5!.bak" 1>nul 2>nul
- set /a num+=1
- )
- )
-
- quit.vbs
- warn.vbs 3 !num!
- if !num!==0 exit 关键就是这句,在我另一个搜索word文件的几乎类似的脚本里这句一模一样,完全没有问题,在这用echo !num! 查看 ,发现值为0的时候不会退出 而是继续执行了
-
- echo 正在查重...
- cd. >TEMP
- set num=0
- for /f "eol=。 delims=" %%a in (DATA) do (
- set var=%%a
- ::搜索以\结尾的字符串会导致异常,删除结尾的\
- if !var:~-1!==\ set var=!var:~0,-1!
- (findstr /l /c:"!var!" TEMP)>nul && set /a num+=1 && cls && echo 删除了 !num! 行重复内容 || echo %%a>>TEMP
- )
- del DATA 1>nul 2>nul
- ren TEMP DATA
- exit
-
- :fileCompare
- for /f "delims=" %%b in ('dir /s /b "%~dp0backup\*.bak"') do (
- fc /u "%~1" "%%b" 1>nul 2>nul
- if !errorlevel!==0 (
- set y=1
- cls & echo "%~1" 内容已存在
- goto end
- )
- )
- :end
复制代码
|