所以,我可能会手动做这个,因为它只有44个文件。 但是,如果出现类似的情况,我想知道如何在将来做更轻松的事情。
基本上,DFS-R从来没有安装在replace文件服务器上,现在是一个月后,我需要安装angular色。 但是,在我这样做之前,我需要将将要成为辅助复制伙伴的44个新文件复制到主复制伙伴,以便在初始复制期间不会丢失它们。 我使用robocopy做了差异比较,所以我使用完整path的文件名,只需将它们复制到主服务器上的相同确切path,只需使用不同的服务器名称即可。 所以基本上:“\ servername1 \ share \ path1 \ path2 \ path3 \ filename.file”需要到“\ servername2 \ share \ path1 \ path2 \ path3 \ filename.file”
但是,由于它是44个项目(至less这次,下次或多或less),我需要一种循环遍历列表的方法,并为列表中的每个项目启动一个副本,只需更改服务器名称即可。
我确信有一种方法可以用Powershell来做到这一点,但是对于PS或一般的脚本来说,我并不是最强大的。 有任何想法吗?
“ 我不能盖这个扁平的桌子和椅子,你能帮我build一个,所以下次我有一个扁平的衣柜,我会更好的吗?
看看这完全不起作用? 这不会更容易,你会和以前一样。 (等等,你认为你会find一个replace的文件服务器,再次丢失DFS-R?首先修复清单/程序)。
让未来更容易的方法是更好地理解它; 你可以通过一点一点地尝试并且把这个问题抨击出来,直到它变得有意义。 这是一个完美的问题,因为它就像它一样容易 – 单个数据位,每行一个文本,一次处理一个数据。
Get-Content ListOfFiles.txt | ForEach-Object { Move-Item $_ ($_ -replace 'servername1', 'servername2') -WhatIf }
这是一个工作的机会 – 除非文件path在文本文件中有引号""
,否则会中断。 删除引号。 或留下引号,而是假装它是一个CSV与:
Import-Csv ListOfFiles.txt -Header Path | ForEach { Move-Item $_.Path ($_.Path -replace 'servername1', 'servername2') }
或者你可以在Excel中打开文件,然后在向导中select“text-qualifier:none”,然后复制目标列并在列中search/replace,然后插入一个新列并写入“move”,然后使用填充,然后全选,复制/粘贴到记事本,保存为batch file,运行。
(但@ uSlackr的评论是相当不错的 – robocopyreplace文件树在原来的,使其同步更改文件)