标题: [数值计算] [已解决]求助批处理代码查错 [打印本页]
作者: 普大喜奔 时间: 2014-9-19 22:37 标题: [已解决]求助批处理代码查错
本帖最后由 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
复制代码
作者: neorobin 时间: 2014-9-19 22:53
回复 1# 普大喜奔 你的代码中, 变量延迟扩展没打开
作者: 普大喜奔 时间: 2014-9-19 22:59
回复 2# neorobin
这是代码的上半部分- @echo off
- setlocal enabledelayedexpansion
- color 0f
- if not exist backup mkdir backup
- warn.vbs 2 0
- dir /s *.xls 1>nul 2>nul
- if !errorlevel!==0 goto start
- warn.vbs 1 0
- exit
-
- :start
- if not exist DATA cd. >DATA
- ::存放已写入行数,在main.vbs中读写
- echo 0 1>TEMP
复制代码
因为关系不大就没贴出来 刚才重启了一下电脑 问题依然存在 我真是被搞晕了!!!
作者: 普大喜奔 时间: 2014-9-19 23:01
可另一个脚本几乎一样的代码 只不过一个处理word一个是excel 不可思议的感觉
作者: 普大喜奔 时间: 2014-9-19 23:06
回复 2# neorobin
即使没打开延迟 echo !num! 回显是 0 那 if !num!==0 也应该成立才对呀
我在想是机子的问题吗?!可是另一个脚本这句是正常的呀!!搞的今晚都要睡不了觉了,呜呜。。。
作者: neorobin 时间: 2014-9-19 23:19
回复 5# 普大喜奔 复制代码
这句的问题
把末尾的空格去掉即可
最好用复制代码
避免不可见的空白字符导致问题
作者: 普大喜奔 时间: 2014-9-19 23:20
回复 2# neorobin
用了间接变量总算正常了 可到底是为什么呢?我都快想疯了也搞不明白。。。- set var=!num!
- if %var%==0 exit
复制代码
作者: 普大喜奔 时间: 2014-9-19 23:21
回复 6# neorobin
果然是的!!牛 感激啊 可以安心睡觉了 哈哈
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |