首页
学习
活动
专区
圈层
工具
发布

RoboCopy源
EN

Stack Overflow用户
提问于 2021-03-02 02:48:46
回答 1查看 173关注 0票数 2

我正在编写一个带有robocopy的powershell脚本,用于从列表中复制“完整的”unc/文件名路径。我遇到的问题是,robocopy似乎添加了一个

到我的源路径的末尾。

我有一个列出UNC路径和文件名的C:\temp\list.txt示例:\server\folder\test.txt

我的代码

代码语言:javascript
复制
$Paths = Get-Content -Path C:\Temp\List.txt
ForEach ($p in $Paths) {robocopy $p "\\Server\path\path\"}

The error that powershell is throwing is : 

   -------------------------------------------------------------------------------
  ROBOCOPY     ::     Robust File Copy for Windows                              
  -------------------------------------------------------------------------------

   Started : Monday, March 1, 2021 1:36:52 PM
   Source : \\Server\path\path\test.xls\
   Dest : \\Server\path\path\
  

Files : *.*
    
Options : *.* /DCOPY:DA /COPY:DAT /R:1000000 /W:30 

------------------------------------------------------------------------------

2021/03/01 13:36:52 ERROR 267 (0x0000010B) Accessing Source Directory 
\\Server\path\path\test.xls\
The directory name is invalid.

有没有人知道怎样才能阻止robocopy添加

在我的“来源”位置的末尾?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-02 03:06:37

我不确定"\“是不是你的问题。您使用的Robocopy命令格式不正确。指定源和目标后,应将文件指定为筛选器。

代码语言:javascript
复制
RoboCopy     ...

因此,您必须重新处理您的循环,以便从输入中剥离文件名,并正确连接Robocopy命令,可能如下所示:

代码语言:javascript
复制
$Paths = Get-Content -Path C:\Temp\List.txt
ForEach ($p in $Paths)
{    
    $Path = Split-Path -Path $p -Parent
    $File = Split-Path -Path $p -Leaf
    robocopy $Path "\\Server\path\path\" $File
}

来自

代码语言:javascript
复制
Started : Monday, March 1, 2021 2:06:53 PM
              Usage :: ROBOCOPY source destination [file [file]...] [options]

             source :: Source Directory (drive:\path or \\server\share\path).
        destination :: Destination Dir  (drive:\path or \\server\share\path).
               file :: File(s) to copy  (names/wildcards: default is "*.*").

筛选器不必是确切的文件名,它们可以利用通配符,如

帮助选择文件。我认为在您的情况下,您会受到输入格式的某种限制。

代码语言:javascript
复制
$Paths = Get-Content -Path C:\Temp\List.txt
ForEach ($p in $Paths)
{    
    $Path = Split-Path -Path $p -Parent
    $File = Split-Path -Path $p -Leaf
    robocopy $Path "\\Server\path\path\"
}

如果您想复制子文件夹及其文件,有3个选项,同样引用帮助文件:

代码语言:javascript
复制
/S :: copy Subdirectories, but not empty ones.
/E :: copy subdirectories, including Empty ones.
/MIR :: MIRror a directory tree (equivalent to /E plus /PURGE).

警告:

可能很危险,因为它可以非常快地删除目标中的内容。

即使您遍历子文件夹,筛选器也会应用。所以一定要调整或删除它。如果你想复制选定文件夹中的所有内容,只需删除过滤器,尽管从技术上讲,星号也可以。

我建议认真研究帮助文件。有不同的文件选择和复制选项是值得了解的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66427866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档