这应该是如此简单 - 对自己很生气,我正在挣扎。我正在尝试编写一个批处理文件,它将文件从网络共享复制到本地计算机,以便我们可以访问它们以供离线使用。当我想要复制所有文件/文件夹(下面)时很简单,但是当我只想从指定目录复制某些文件夹时,我就会卡住。
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正确,如果是当我尝试将它们与循环中的文件夹和反斜杠组合时我很难。任何提示?
或者我可以从文本文件中读取文件夹列表而不是硬编码(新行中的文件夹名称) - 这将是一个首选解决方案,因为它可以使编辑更容易。
我尝试了一些事情,例如在循环中设置一个新变量,!,%和%%等,但我不能说我完全理解我在做什么。
答案 0 :(得分:0)
看起来我跳了一下枪:更容易从文件中读取......
set "fldr=Use Folders.txt"
for /F "usebackq tokens=*" %%i in ("%fldr%") do (
echo %src%\%%i
)