Board logo

标题: [文本处理] [已解决]批处理提取月份的问题 [打印本页]

作者: tamyfx    时间: 2016-12-2 14:54     标题: [已解决]批处理提取月份的问题

请教大神,我有一批处理,代码如下
  1. findstr ............ "F:\图片\按列表名复制文件的批处理\TEP\骏锋.txt" >> aa.txt
  2. findstr ............ "F:\图片\按列表名复制文件的批处理\TEP\永锦.txt" >> bb.txt
  3. set str1=.jpg
  4. for /f %%a in (aa.txt) do echo %%a%str1% >>骏锋.txt
  5. for /f %%a in (bb.txt) do echo %%a%str1% >>永锦.txt
  6. set mm=%date:~5,2%
  7. if "%mm%"=="01" (set mm1=12)
  8. if "%mm%"=="02" (set mm1=1)
  9. if "%mm%"=="03" (set mm1=2)
  10. if "%mm%"=="04" (set mm1=3)
  11. if "%mm%"=="05" (set mm1=4)
  12. if "%mm%"=="06" (set mm1=5)
  13. if "%mm%"=="07" (set mm1=6)
  14. if "%mm%"=="08" (set mm1=7)
  15. if "%mm%"=="09" (set mm1=8)
  16. if "%mm%"=="10" (set mm1=9)
  17. if "%mm%"=="11" (set mm1=10)
  18. if "%mm%"=="12" (set mm1=11)
  19. set "str=F:\图片\%mm1%月份图片"
  20. set "var1=G:\图片\永锦%mm1%月"
  21. set "var2=G:\图片\骏锋%mm1%月"
  22. for /f "tokens=* delims=" %%a in (骏锋.txt) do ( xcopy %str%\%%a %var2%\ /y) 2>>F:\图片\按列表名复制文件的批处理\logtep.txt
  23. for /f "tokens=* delims=" %%a in (永锦.txt) do ( xcopy %str%\%%a %var1%\ /y) 2>>F:\图片\按列表名复制文件的批处理\logtep.txt
  24. for /f "tokens=3 delims=. " %%a in (logtep.txt) do echo %%a >>log.txt
  25. call F:\图片\按列表名复制文件的批处理\log.txt
  26. del ??.txt
  27. del lo*.txt
  28. del "F:\图片\按列表名复制文件的批处理\TEP\*.txt"
复制代码
现在的问题是不能用,我试过后发现问题在这段:
set mm=%date:~5,2%
if "%mm%"=="01" (set mm1=12)
if "%mm%"=="02" (set mm1=1)
if "%mm%"=="03" (set mm1=2)
if "%mm%"=="04" (set mm1=3)
if "%mm%"=="05" (set mm1=4)
if "%mm%"=="06" (set mm1=5)
if "%mm%"=="07" (set mm1=6)
if "%mm%"=="08" (set mm1=7)
if "%mm%"=="09" (set mm1=8)
if "%mm%"=="10" (set mm1=9)
if "%mm%"=="11" (set mm1=10)
if "%mm%"=="12" (set mm1=11)
也就是说mm1的值不会到下面这几句的%mm1%上去
set "str=F:\图片\%mm1%月份图片"
set "var1=G:\图片\永锦%mm1%月"
set "var2=G:\图片\骏锋%mm1%月"
我要是把%mm1%改成具体的数。比如11就可以运行。
请问,问题在哪里?

附件是测试文件
作者: pcl_test    时间: 2016-12-2 15:12

是不是,echo下就知道了
  1. ......
  2. if "%mm%"=="12" (set mm1=11)
  3. echo;"%mm%"
  4. echo;%mm1%
  5. ......
复制代码

作者: flyinnet9    时间: 2016-12-2 15:13

最开始加 setlocal ENABLEDELAYEDEXPANSION
%mm%改成!mm!
作者: CommandBatCmd    时间: 2016-12-2 15:20

回复 1# tamyfx


    你检查代码中,
set mm=%date:~5,2%”处的行尾,
如有空格,删除即可。
作者: /zhqsystem/zhq    时间: 2016-12-2 23:44

本帖最后由 /zhqsystem/zhq 于 2016-12-3 00:16 编辑

if "%mm:~0,1%"==" " set "mm=%mm: =%"
if "%mm:~0,1%"==" " set "mm=%mm:~1%"
set/a "mm1=%mm%-1"
if "%mm1%"=="0" set "mm1=12"
if "%mm%"=="1" (set "mm1=12")else (set/a "mm1=%mm%-1")
echo,%mm1%


详情进入
http://www.bathome.net/thread-31727-1-1.html
作者: tamyfx    时间: 2016-12-5 15:08

回复 2# pcl_test
感谢版主,试了下
%mm%能显示的出来。
%mm1%显示不出来。
为何?
作者: tamyfx    时间: 2016-12-5 15:10

回复 4# CommandBatCmd


    感谢CommandBatCmd
正如你所说:
“set mm=%date:~5,2%”处的行尾,
如有空格,删除即可。

试了下,行尾确实有个空格删除后能正常显示了。
非常感谢!
作者: tamyfx    时间: 2016-12-5 15:17

回复 3# flyinnet9


    感谢flyinnet9
试了下你的法,不行。
非常感谢
作者: tamyfx    时间: 2016-12-5 15:18

总结:
“set mm=%date:~5,2%”处的行尾,
如有空格,删除即可。




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