找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26978|回复: 8

[文本处理] [已解决]批处理提取月份的问题

[复制链接]
发表于 2016-12-2 14:54:23 | 显示全部楼层 |阅读模式
请教大神,我有一批处理,代码如下
  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就可以运行。
请问,问题在哪里?

附件是测试文件

评分

参与人数 2PB -2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样
pcl_test -4 勿发笼统的标题

查看全部评分

发表于 2016-12-2 15:12:30 | 显示全部楼层
是不是,echo下就知道了

  1. ......
  2. if "%mm%"=="12" (set mm1=11)
  3. echo;"%mm%"
  4. echo;%mm1%
  5. ......
复制代码
发表于 2016-12-2 15:13:34 | 显示全部楼层
最开始加 setlocal ENABLEDELAYEDEXPANSION
%mm%改成!mm!
发表于 2016-12-2 15:20:49 | 显示全部楼层
回复 1# tamyfx


    你检查代码中,
set mm=%date:~5,2%”处的行尾,
如有空格,删除即可。
发表于 2016-12-2 23:44:41 | 显示全部楼层
本帖最后由 /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
 楼主| 发表于 2016-12-5 15:08:22 | 显示全部楼层
回复 2# pcl_test
感谢版主,试了下
%mm%能显示的出来。
%mm1%显示不出来。
为何?
 楼主| 发表于 2016-12-5 15:10:55 | 显示全部楼层
回复 4# CommandBatCmd


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

试了下,行尾确实有个空格删除后能正常显示了。
非常感谢!
 楼主| 发表于 2016-12-5 15:17:22 | 显示全部楼层
回复 3# flyinnet9


    感谢flyinnet9
试了下你的法,不行。
非常感谢
 楼主| 发表于 2016-12-5 15:18:21 | 显示全部楼层
总结:
“set mm=%date:~5,2%”处的行尾,
如有空格,删除即可。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 11:37 , Processed in 0.021800 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表