批处理BAT文件中FOR语句中echo的显示问题
这段代码在CMD窗口运行正常,我想将它写成批处理文件,我只知道FOR中的%应该写成%%,但输出结果还是不对。请大家指教~!cdc:\ssfor/f"delims="%ai...
这段代码在CMD窗口运行正常,我想将它写成批处理文件,我只知道FOR中的%应该写成%%,但输出结果还是不对。请大家指教~!
cd c:\ss
for /f "delims=" %a in ('dir /s/b/a-d c:\ss\aaa.pdf') do (
echo %~ta
set str=%~ta
echo %str:~0,4%
echo %str:~5,2%
echo %str:~8,2%
echo %str:~11,2%
echo %str:~14,2%
set str1=%str:~0,4%%str:~5,2%%str:~8,2%_%str:~11,2%%str:~14,2%
echo %str1%
copy c:\ss\aaa.pdf c:\ews\result\%str1%.pdf
start D:\"Foxit Software"\"Foxit Phantom"\"Foxit Phantom.exe" c:\ews\result\%str1%.pdf
)
=====================
结果:
echo 2011-10-11 12:15
set "str=2011-10-11 12:15"
echo ~0,4
echo ~5,2
echo ~8,2
echo ~11,2
echo ~14,2
set str1=~0,4%str:~5,2%str:~8,2str:~11,2%str:~14,2
echo
copy c:\ss\aaa.pdf c:\ews\result\.pdf
start D:\"Foxit Software"\"Foxit Phantom"\"Foxit Phantom.exe" c:\ews\result\.pd
f
)
2011-10-11 12:15
~0,4
~5,2
~8,2
~11,2
~14,2
ECHO 处于打开状态。
===============================
谢谢大家
也就是说,上面的代码在CMD窗口下运行是正常的,可以输出20111011_1215.PDF,但是在BAT文件里,我只知道将%改成%%,其它的照旧,结果就不无法输出正确结果了。 展开
cd c:\ss
for /f "delims=" %a in ('dir /s/b/a-d c:\ss\aaa.pdf') do (
echo %~ta
set str=%~ta
echo %str:~0,4%
echo %str:~5,2%
echo %str:~8,2%
echo %str:~11,2%
echo %str:~14,2%
set str1=%str:~0,4%%str:~5,2%%str:~8,2%_%str:~11,2%%str:~14,2%
echo %str1%
copy c:\ss\aaa.pdf c:\ews\result\%str1%.pdf
start D:\"Foxit Software"\"Foxit Phantom"\"Foxit Phantom.exe" c:\ews\result\%str1%.pdf
)
=====================
结果:
echo 2011-10-11 12:15
set "str=2011-10-11 12:15"
echo ~0,4
echo ~5,2
echo ~8,2
echo ~11,2
echo ~14,2
set str1=~0,4%str:~5,2%str:~8,2str:~11,2%str:~14,2
echo
copy c:\ss\aaa.pdf c:\ews\result\.pdf
start D:\"Foxit Software"\"Foxit Phantom"\"Foxit Phantom.exe" c:\ews\result\.pd
f
)
2011-10-11 12:15
~0,4
~5,2
~8,2
~11,2
~14,2
ECHO 处于打开状态。
===============================
谢谢大家
也就是说,上面的代码在CMD窗口下运行是正常的,可以输出20111011_1215.PDF,但是在BAT文件里,我只知道将%改成%%,其它的照旧,结果就不无法输出正确结果了。 展开
2个回答
展开全部
为什么要用FOR呢,下面的代码可以实现你的要求,就是将 c:\ss\aaa.pdf 建立一个新的拷贝 c:\ews\result\20111011_1215.pdf
-----------------------------------------------------------------------------------
set "str=2011-10-11 12:15"
set str1=%str:~0,4%%str:~5,2%%str:~8,2%_%str:~11,2%%str:~14,2%
echo %str1%
copy c:\ss\aaa.pdf c:\ews\result\%str1%.pdf
-----------------------------------------------------------------------------------
set "str=2011-10-11 12:15"
set str1=%str:~0,4%%str:~5,2%%str:~8,2%_%str:~11,2%%str:~14,2%
echo %str1%
copy c:\ss\aaa.pdf c:\ews\result\%str1%.pdf
更多追问追答
追问
因为我需要用任务计划来自动运行拷贝程序,需要建立一个批处理文件。
追答
你把我的代码存成BAT可以运行的,我测试过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /s/b/a-d c:\ss\aaa.pdf') do (
echo %%~ta
set str=%%~ta
echo !str:~0,4!
echo !str:~5,2!
echo !str:~8,2!
echo !str:~11,2!
echo !str:~14,2!
set str1=!str:~0,4!!str:~5,2!!str:~8,2!_!str:~11,2!!str:~14,2!
echo
copy c:\ss\aaa.pdf c:\ews\result\.pdf
start D:\"Foxit Software"\"Foxit Phantom"\"Foxit Phantom.exe" c:\ews\result\.pdf
)
for /f "delims=" %%a in ('dir /s/b/a-d c:\ss\aaa.pdf') do (
echo %%~ta
set str=%%~ta
echo !str:~0,4!
echo !str:~5,2!
echo !str:~8,2!
echo !str:~11,2!
echo !str:~14,2!
set str1=!str:~0,4!!str:~5,2!!str:~8,2!_!str:~11,2!!str:~14,2!
echo
copy c:\ss\aaa.pdf c:\ews\result\.pdf
start D:\"Foxit Software"\"Foxit Phantom"\"Foxit Phantom.exe" c:\ews\result\.pdf
)
追问
您好,能解释一下为什么要把%改成!么?谢谢!
追答
在循环中使用变量要使用变量延迟,详细介绍看百度百科的介绍。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询