【发布时间】:2022-02-19 15:45:45
【问题描述】:
我从高到低,尝试了所有我能想到的选项,但似乎无法找到解决方案。 我正在运行一个调用 robocopy 的 PS 作业,以简单地获取输入文件 (CSV) 中给出的文件夹列表的文件夹/文件计数和父文件夹的大小。
这里是一些代码(至少是重要的行)..
$Filter = '*.*'
$params = New-Object System.Collections.Arraylist
$params.AddRange(@("/L","/S","/NJH","/BYTES","/FP","/NFL","/MT:64","/NC","/NDL","/TS","/XJ","/R:0","/W:0"))
$InputFile = '\\server\org\archives\folder\Folders.csv'
$Paths = Get-Content $InputFile
ForEach ($item in $Paths) {
ListFolder $item
Function ListFolder {
$Script = robocopy $item NULL $Filter $params
}
奇怪的是上面的代码适用于像这样的文件夹;
\server\Org\Folder\TST\AC&DC Rock
但错误;
\server\Org\Folder\TST\AC&DC Rock\Thunder Struck、Rosie 和 DirtyDeeds
运行 robocopy $Paths NULL $Filter $params
或
运行 robocopy ""$Paths"" NULL $Filter $params
或
运行 robocopy ''$Paths'' NULL $Filter $params
我明白了:
Source: - \\server\Org\Folder\TST\AC&DC Rock\Thunder Struck, Rosie and DirtyDeeds\
Dest - \\.\NUL\
Files : *.*
Options : *.* /DCOPY:DA /COPY:DAT /R:1000000 /W:30
------------------------------------------------------------------------------
ERROR : Invalid Parameter #4 : "/L /S /NJH /BYTES /FP /NFL /MT:64 /NC /NDL /TS /XJ /R:0 /W:0"
是逗号吗?
运行 robocopy "" + $Paths + "" NULL $Filter $params
我明白了:
C:\Users\fisrt.last\+\
Dest - \\server\Org\Folder\TST\AC&DC Rock\Thunder Struck, Rosie and DirtyDeeds\
Files : *.*
Options : *.* /DCOPY:DA /COPY:DAT /R:1000000 /W:30
------------------------------------------------------------------------------
ERROR : Invalid Parameter #6 : "/L /S /NJH /BYTES /FP /NFL /MT:64 /NC /NDL /TS /XJ /R:0 /W:0"
最后...
运行 robocopy "$Paths" NULL $Filter $params
我明白了:
Source - C:\Users\first.last\"\\server\Org\Folder\TST\AC&DC\
Dest - C:\Users\first.last\Rock\Thunder Struck, Rosie and DirtyDeeds\
Files : *.*
Options : *.* /DCOPY:DA /COPY:DAT /R:1000000 /W:30
------------------------------------------------------------------------------
ERROR : Invalid Parameter #10 : "/L /S /NJH /BYTES /FP /NFL /MT:64 /NC /NDL /TS /XJ /R:0 /W:0"
我已经尝试了许多其他迭代,如在此处发布的类似建议、MS 网站和其他一堆。
【问题讨论】:
-
为什么这个标签是r?
-
另外,您需要将函数
ListFolder移到顶部。现在您在 before 它被定义之前调用它。
标签: powershell robocopy