标题: [文本处理] [已解决]批处理提取月份的问题 [打印本页]
作者: tamyfx 时间: 2016-12-2 14:54 标题: [已解决]批处理提取月份的问题
请教大神,我有一批处理,代码如下- findstr ............ "F:\图片\按列表名复制文件的批处理\TEP\骏锋.txt" >> aa.txt
- findstr ............ "F:\图片\按列表名复制文件的批处理\TEP\永锦.txt" >> bb.txt
- set str1=.jpg
- for /f %%a in (aa.txt) do echo %%a%str1% >>骏锋.txt
- for /f %%a in (bb.txt) do echo %%a%str1% >>永锦.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)
- set "str=F:\图片\%mm1%月份图片"
- set "var1=G:\图片\永锦%mm1%月"
- set "var2=G:\图片\骏锋%mm1%月"
- for /f "tokens=* delims=" %%a in (骏锋.txt) do ( xcopy %str%\%%a %var2%\ /y) 2>>F:\图片\按列表名复制文件的批处理\logtep.txt
- for /f "tokens=* delims=" %%a in (永锦.txt) do ( xcopy %str%\%%a %var1%\ /y) 2>>F:\图片\按列表名复制文件的批处理\logtep.txt
- for /f "tokens=3 delims=. " %%a in (logtep.txt) do echo %%a >>log.txt
- call F:\图片\按列表名复制文件的批处理\log.txt
- del ??.txt
- del lo*.txt
- 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下就知道了- ......
- if "%mm%"=="12" (set mm1=11)
- echo;"%mm%"
- echo;%mm1%
- ......
复制代码
作者: 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 |