【问题标题】:Batch File Loop Through Specfied Folders批处理文件循环遍历指定文件夹
【发布时间】:2018-02-13 09:17:57
【问题描述】:

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

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 复制“文件夹 1”、“文件夹 2”和“文件夹 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,如果是当我尝试将它们与我挣扎的循环中的文件夹和反斜杠结合起来时。有什么提示吗?

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

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

【问题讨论】:

    标签: windows list batch-file directory


    【解决方案1】:

    看起来我有点过激了:从文件中读取要容易得多...

    set "fldr=Use Folders.txt"
    
    for /F "usebackq tokens=*" %%i in ("%fldr%") do (
        echo %src%\%%i
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多