-a a.xml -a b.xml -a c.xml
以下是我的代码。
copy *.xml C:\FTP
setLocal Enabledelayedexpansion
set "directory=C:\temp"
set "attachment= "
set "a= -a "
for %%n in (%directory% *.xml) DO (
set "attachment=!attachment! %a% %directory%\%%n "
echo.%attachment%
)
setlocal disabledelayedexpansion
echo.%attachment%
输出显示在此图片中http://imgur.com/vpUUe05 我的问题是,首先, for循环中的所有回声都没有打印出来。如那些空行所示。 我想要的最后一个字符串,即。附件,包含
的初始子字符串-a C:\temp\C:temp.
这实际上不是文件。我想要的最后一个字符串应该是没有这个子字符串的字符串,只有那个后面的字符串。顺便说一句,如果文件夹中没有文件,我希望字符串“attachment”只是一个空字符串,如“”。谁能帮我?非常感谢!
答案 0 :(得分:6)
在for
循环中显示%attachment%
的值,以便在每次迭代中不更新该值;你必须使用延迟扩展才能这样做。
for
命令中的值集合为:(%directory% *.xml)
,即值C:\temp
和扩展名为.xml的所有文件,我假设在当前目录中为none。之后,您在%a% %directory%\%%n
表达式中使用此值,因此结果为-a C:\temp\C:\temp
。我认为这里没有意义。
如果您不想要列表中的文件夹值,请不要插入它并在%~NXn
可替换参数中使用for
修饰符。
以下是正确的代码:
copy *.xml C:\FTP
setLocal Enabledelayedexpansion
set "directory=C:\temp"
set "attachment= "
set "a= -a "
for %%n in ("%directory%\*.xml") DO (
set "attachment=!attachment! %a% %%~NXn "
echo.!attachment!
)
setlocal disabledelayedexpansion
echo.%attachment%