2012-10-16 141 views
0

这个cmd命令给了我后面的文件。Xcopy变量声明

dir /b /a-d "\\teams1.sharepoint.xx.com\teams\Contractcenter_Volume Direct Contracts\Shared Documents\"|findstr /b "CONTRACT" >"C:\AIRCR_CHANGE1_PATSY\aaafiles.tmp"

现在我怎么养活这个文件名到XCOPY放在一个漂亮的批处理文件?

XCOPY“源文件路径”,“目标文件路径”

我需要打开文件,读取文件名并存储为变量,然后做xocpy“变量源”,“目标文件路径”

回答

0

您可以使用FOR命令来读取文件并将内容存储在变量中,然后将该变量用作源或目标路径。

E.g.

FOR /F %%I in (C:\AIRCR_CHANGE1_PATSY\aaafiles.tmp) DO xcopy %%I destinationPath 

需要注意的是上面的命令thie将解析您的临时文件的每一行,返回的第一个标记为%%I。标记的默认分隔符是空白字符(空格或制表符)。如果源/目标文件的路径可能包含空格,则必须指定一个不同的分隔符,例如,

FOR /F "delims=;" %%I in (C:\AIRCR_CHANGE1_PATSY\aaafiles.tmp) DO xcopy %%I destinationPath 

FOR命令的帮助应该帮助你调整,以满足您的需求的命令。

1

重写答案 - 原来是错

我不认为需要一个临时文件,同时,我也不认为有必要FINDSTR。您应该可以直接使用XCOPY:

xcopy "\teams1.sharepoint.xx.com\teams\Contractcenter_Volume Direct Contracts\Shared Documents\contract*" "destinationFolder" 
+0

'* contract *',也许? –

+0

此外,根目录文件夹('\\ teams1.sharepoint.xx.com \ teams \ Contractcenter_Volume Direct Contracts \ Shared Documents \“'one)应该在'/ r'后指定。 –

+0

@AndriyM - '* contract *'?不,因为OP的代码使用FINDSTR/B选项。包含FOR/R之后的根路径?不完全是因为不应该进行递归搜索。我不知道为什么我介绍/ R。但是路径肯定应该包含在IN()子句中。但是现在我意识到没有递归,整个事情被一个简单的XCOPY所取代。谢谢。 – dbenham