RoboCopy 来源
RoboCopy Source
我正在编写一个带有 robocopy 的 powershell 脚本,以从列表中复制“完整”unc/file 名称路径。我遇到的问题是 robocopy 似乎在我的源路径末尾添加了 \
。
我有一个 C:\temp\list.txt 列出了带有文件名的 UNC 路径示例:\server\folder\test.txt
我的代码
$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 在我的“源”位置末尾添加 \
?
感谢您的帮助。
我不确定“\”是否是您的问题。您使用的 Robocopy 命令格式不正确。指定源和目标后,应将文件指定为过滤器。
RoboCopy <SourceFolderPath> <DestinationFolderPath> <File1> <File2> ...
因此,您将不得不重新设计循环以从输入中剥离文件名并正确连接 Robocopy 命令,可能类似于:
$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
}
来自Robocopy.exe /?
:
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 "*.*").
过滤器不必是准确的文件名,它们可以利用像 *.xls
这样的通配符来帮助 select 文件。我认为在您的情况下,您在某种程度上受到输入格式的限制。
$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 个选项,再次引用帮助文件:
/S :: copy Subdirectories, but not empty ones.
/E :: copy subdirectories, including Empty ones.
/MIR :: MIRror a directory tree (equivalent to /E plus /PURGE).
警告: /MIR
可能很危险,因为它会很快删除目标中的内容。
即使您遍历子文件夹,过滤器也会应用。所以一定要调整或删除它。如果您想复制 selected 文件夹中的所有内容,只需删除过滤器即可,但从技术上讲,星号也可以。
建议认真研究一下帮助文件。有不同的文件 selection 和复制选项值得了解。
我正在编写一个带有 robocopy 的 powershell 脚本,以从列表中复制“完整”unc/file 名称路径。我遇到的问题是 robocopy 似乎在我的源路径末尾添加了 \
。
我有一个 C:\temp\list.txt 列出了带有文件名的 UNC 路径示例:\server\folder\test.txt
我的代码
$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 在我的“源”位置末尾添加 \
?
感谢您的帮助。
我不确定“\”是否是您的问题。您使用的 Robocopy 命令格式不正确。指定源和目标后,应将文件指定为过滤器。
RoboCopy <SourceFolderPath> <DestinationFolderPath> <File1> <File2> ...
因此,您将不得不重新设计循环以从输入中剥离文件名并正确连接 Robocopy 命令,可能类似于:
$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
}
来自Robocopy.exe /?
:
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 "*.*").
过滤器不必是准确的文件名,它们可以利用像 *.xls
这样的通配符来帮助 select 文件。我认为在您的情况下,您在某种程度上受到输入格式的限制。
$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 个选项,再次引用帮助文件:
/S :: copy Subdirectories, but not empty ones.
/E :: copy subdirectories, including Empty ones.
/MIR :: MIRror a directory tree (equivalent to /E plus /PURGE).
警告: /MIR
可能很危险,因为它会很快删除目标中的内容。
即使您遍历子文件夹,过滤器也会应用。所以一定要调整或删除它。如果您想复制 selected 文件夹中的所有内容,只需删除过滤器即可,但从技术上讲,星号也可以。
建议认真研究一下帮助文件。有不同的文件 selection 和复制选项值得了解。