String 批处理文件名字符串连接
这个问题困扰了我好几个小时。我希望有人能帮我弄清楚。基本上,我尝试扫描文件夹中的所有文件(特定类型)(其中没有子文件夹,因此不必担心这种情况),获取这些文件的名称,并将所有文件连接成一个字符串例如,如果一个文件夹有两个文件, a、 xml,b.xml和c.xml,我想得到一个字符串 -a.xml-a b.xml-a c.xml 下面是我的代码String 批处理文件名字符串连接,string,batch-file,filenames,string-concatenation,String,Batch File,Filenames,String Concatenation,这个问题困扰了我好几个小时。我希望有人能帮我弄清楚。基本上,我尝试扫描文件夹中的所有文件(特定类型)(其中没有子文件夹,因此不必担心这种情况),获取这些文件的名称,并将所有文件连接成一个字符串例如,如果一个文件夹有两个文件, a、 xml,b.xml和c.xml,我想得到一个字符串 -a.xml-a b.xml-a c.xml 下面是我的代码 copy *.xml C:\FTP setLocal Enabledelayedexpansion set "directory=C:\temp" set
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%
输出如图所示
我的问题是首先,
for循环中的所有回声都不会打印出任何内容。如那些空行所示。
我想要的最后一个字符串,即附件,包含
-a C:\temp\C:temp.
这实际上不是一个文件。我想要的最后一个字符串应该是没有这个子字符串的字符串,只有它后面的那些子字符串。顺便说一下,如果文件夹中没有文件,我希望字符串“attachment”只是一个空字符串,如“”。有人能帮我吗?非常感谢 在
循环的中,显示%attachment%
的值,这样在每次迭代中都不会更新该值;必须使用延迟扩展才能执行此操作
命令的中的值集是:(%directory%*.xml)
也就是说,值C:\temp
和扩展名为.xml的所有文件,我假设它们在当前目录中都没有。然后,在%a%%directory%%\%n
表达式中使用此值,因此结果是-a C:\temp\C:\temp
。我认为这没有意义
如果不希望列表中的文件夹值,只需不插入它,并在for
可替换参数的中使用%~NXn
修饰符即可
以下是正确的代码:
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%
嗨,非常感谢你!它起作用了。我可以问一下echo.%附件%和echo.之间的区别吗。!附件还有什么是%%~NXn?批处理文件似乎有这么多的缩写,就像,我真的很模糊。在哪里可以找到这些缩写的列表?非常感谢。