Board logo

标题: [文件操作] 求助传输文件的批处理脚本提示无效数字 [打印本页]

作者: houchuanbao    时间: 2021-4-8 12:14     标题: 求助传输文件的批处理脚本提示无效数字

我这边一个传输文件的脚本一直提示“无效数字。数字常数只能是十进制(17),十六进制(0x11)或八进制(021)”,请各位大佬帮帮忙,看一下那里出错了
  1. @echo off
  2. set Pan=D:\1\
  3. set Back=D:\2\
  4. set DQ=238358
  5. set YS=238357
  6. set LogFile=D:\1\
  7. set D=%DATE:~8,2%
  8. set DD=0
  9. set DDD=0
  10. set DDDD=0
  11. :loop
  12. ping -n 1 127.0.0.>nul
  13. set D=%DATE:~8,2%
  14. set DESFILE=1_%DQ%_1047576955.dbf.zip
  15. set YSFILE=1_%YS%_1047576955.dbf.zip
  16. echo %DESFILE%
  17. if %DD% NEQ %D% (
  18.   set /a DD = %D%+0
  19.   set /a DDD= %DDD%+1
  20.   set /a DDDD = %DDD%+0
  21.   set /a DDDD = %DDD%+1
  22.   echo %DDD%
  23.   echo %DDDD%
  24.   echo %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% movesoft[]:Create softlog-%DDDD%.log Sussce > %LogFile%softlog-0.log
  25.   echo sesuuce
  26. ) else (
  27.   echo %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% movesoft[]:Create softlog-%DDDD%.log Fail > %LogFile%softlog-1.log
  28.   echo !
  29. )
  30. if exist "%Pan%%DESFILE%" (
  31.   set /a YS=%YS%+1
  32.   set YSFILE=1_%YS%_1047576955.dbf.tar.bz
  33.   echo %YSFILE%
  34.   move "%Pan%%YSFILE%" "%Back%" > nul
  35.   echo %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% movesoft[]:copy "%Pan%%YSFILE%" "%Back%" Sussce >> %LogFile%softlog-%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%.log
  36.   set /a DQ=%DQ%+1
  37. ) else (
  38.   echo %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% movesoft[]:copy "%Pan%%YSFILE%" "%Back%" NotFound > %LogFile%softlog-fail.log
  39. )
  40. goto:loop
  41. pause
复制代码

作者: Batcher    时间: 2021-4-8 14:25

回复 1# houchuanbao


请参考Q-01观察一下哪行代码在报错:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: 路过    时间: 2021-4-8 17:05

答案在中文注释里
  1. @echo off
  2. set Pan=D:\1\
  3. set Back=D:\2\
  4. set DQ=238358
  5. set YS=238357
  6. set LogFile=D:\1\
  7. set D=%DATE:~8,2%
  8. set DD=0
  9. set DDD=0
  10. set DDDD=0
  11. :loop
  12. ping -n 1 127.0.0.>nul
  13. ::这里是出错的关键。今天是4月8日,D的结果是08。
  14. set D=%DATE:~8,2%
  15. set DESFILE=1_%DQ%_1047576955.dbf.zip
  16. set YSFILE=1_%YS%_1047576955.dbf.zip
  17. echo %DESFILE%
  18. if %DD% NEQ %D% (
  19.   ::0开头的数字在参与计算时,会将其视为8进制数,08,09是无效的8进制数,因此会报错。
  20.   set /a DD = %D%+0
  21.   set /a DDD= %DDD%+1
  22.   set /a DDDD = %DDD%+0
  23.   set /a DDDD = %DDD%+1
  24.   echo %DDD%
  25.   echo %DDDD%
  26.   echo %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% movesoft[]:Create softlog-%DDDD%.log Sussce > %LogFile%softlog-0.log
  27.   echo sesuuce
  28. ) else (
  29.   echo %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% movesoft[]:Create softlog-%DDDD%.log Fail > %LogFile%softlog-1.log
  30.   echo !
  31. )
  32. if exist "%Pan%%DESFILE%" (
  33.   set /a YS=%YS%+1
  34.   set YSFILE=1_%YS%_1047576955.dbf.tar.bz
  35.   echo %YSFILE%
  36.   move "%Pan%%YSFILE%" "%Back%" > nul
  37.   echo %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% movesoft[]:copy "%Pan%%YSFILE%" "%Back%" Sussce >> %LogFile%softlog-%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%.log
  38.   set /a DQ=%DQ%+1
  39. ) else (
  40.   echo %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% movesoft[]:copy "%Pan%%YSFILE%" "%Back%" NotFound > %LogFile%softlog-fail.log
  41. )
  42. goto:loop
  43. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2