批处理:将目录列表保存到list-variable中

时间:2015-10-15 11:41:37

标签: windows list batch-file dir

我想从源目录(C:\Users\Desktop\Source\Test.xlsx)获取一个文件,并希望将其复制到几个文件夹,所有文件夹都具有相同的结构。所以我只需要更改一个文件夹名称。所有这些都是通过一个批处理文件和一个后来创建的日志文件完成的。

要在此处动态扩展我的批处理程序,我想对根文件夹(C:\Users\Desktop\Replica\)的元素进行过滤,这会向我显示子项(one {{1} } two three four)文件需要在five内复制。我现在已经完成了以下操作,这是静态的:

testfolder

所以,我的问题基本上是我在“replica”下列出的文件夹,并把它们放在我可以在代码中使用的列表变量中。我只找到了这些只是保存在一个单独的.txt文件中的来源,但我只想把它保存在批处理中。

对此问题有任何猜测吗?

顺便说一下:我通过将路径保存为变量来体验,我无法执行set "list=one two three four five" ( for %%i in (%list%) do ( xcopy "C:\Users\Desktop\Source\Test.xlsx" "C:\Users\Desktop\Replica\%%i\testfolder" /Y echo(%%i echo( ) )>copylog.txt (即使拥有“xcopy %source% %target%”或%source%)。这有什么问题?

1 个答案:

答案 0 :(得分:0)

您不需要搜索目录,将它们放入变量中,然后迭代变量中的值。只需遍历目录

...
for /d %%i in ("C:\Users\Desktop\Replica\*") do (
    xcopy /y "C:\Users\Desktop\Source\Test.xlsx" "%%~fi\testfolder"
...

for /d将迭代指定的目录集。在xcopy命令中%%~fi用于检索当前迭代的目录的完整路径。