批量文件循环通过指定的文件夹

时间:2018-02-13 09:17:58

标签: windows list batch-file directory

这应该是如此简单 - 对自己很生气,我正在挣扎。我正在尝试编写一个批处理文件,它将文件从网络共享复制到本地计算机,以便我们可以访问它们以供离线使用。当我想要复制所有文件/文件夹(下面)时很简单,但是当我只想从指定目录复制某些文件夹时,我就会卡住。

set dst="C:\Users\Public\Test Dest"
set src="Z:\Blah & Blah\Foo Bar"
robocopy %src% %dst% /S /MT4 /NFL /NDL /NP /NS /NC /MIR

复制一切 - 工作正常。但是如果我只想从src复制'Folder 1','Folder 2'和'Folder 3'并将它们放在dest中同名的文件夹中,我就会卡住。

EG:
Foo Bar:
Folder 1
  Copy this.txt
Folder 2
  Copy this.txt
Folder 3
  Copy this.txt
Folder 4
  Don't copy this.txt
Don't copy this.txt

所以dest会成为

Test Dest:
Folder 1
  Copy this.txt
Folder 2
  Copy this.txt
Folder 3
  Copy this.txt

为了测试的目的,我已经删除了实际的副本,并且只是试图打印完整的源代码和目标,我可以稍后将其放入副本中(我希望)。这就是我得到的:

@echo off
setlocal EnableDelayedExpansion

set dst="C:\Users\Public\Test Dest"
set src="Z:\Blah & Blah\Foo Bar"

echo %dst%
echo %src%

set FOLDER_LIST=("Folder 1" "Folder 2" "Folder 3")
for %%i in %FOLDER_LIST% do (
 echo %src%\%%i
)

这个回声src和dst正确,如果是当我尝试将它们与循环中的文件夹和反斜杠组合时我很难。任何提示?

或者我可以从文本文件中读取文件夹列表而不是硬编码(新行中的文件夹名称) - 这将是一个首选解决方案,因为它可以使编辑更容易。

我尝试了一些事情,例如在循环中设置一个新变量,!,%和%%等,但我不能说我完全理解我在做什么。

1 个答案:

答案 0 :(得分:0)

看起来我跳了一下枪:更容易从文件中读取......

set "fldr=Use Folders.txt"

for /F "usebackq tokens=*" %%i in ("%fldr%") do (
    echo %src%\%%i
)