[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

请教大神,我有一批处理,代码如下
  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就可以运行。
请问,问题在哪里?

附件是测试文件
2

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
    • pcl_test: 勿发笼统的标题PB -4

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

TOP

最开始加 setlocal ENABLEDELAYEDEXPANSION
%mm%改成!mm!

TOP

回复 1# tamyfx


    你检查代码中,
set mm=%date:~5,2%”处的行尾,
如有空格,删除即可。

TOP

本帖最后由 /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
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 2# pcl_test
感谢版主,试了下
%mm%能显示的出来。
%mm1%显示不出来。
为何?

TOP

回复 4# CommandBatCmd


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

试了下,行尾确实有个空格删除后能正常显示了。
非常感谢!

TOP

回复 3# flyinnet9


    感谢flyinnet9
试了下你的法,不行。
非常感谢

TOP

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

TOP

返回列表