powershell - PS,Robocopy 将引号附加到变量值
问题描述
我看起来高低,尝试了我能想到的每一个选项,但似乎无法找到解决这个问题的方法。我正在运行一个调用 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 站点和许多其他迭代。
解决方案
使用 PowerShell - 一旦我从单引号切换到双引号,参数溅射对我有用。查看该用户的回答:https ://stackoverflow.com/a/45231586/15003410
推荐阅读
- c# - 从数据库中获取日期并在 C# 中格式化
- selenium - 如何使用 selenium 在页面源中验证特定脚本?
- reactjs - InstantSearch 和服务器端渲染:staticContext 未定义
- typescript - FormArray:无法读取打字稿中未定义的属性“推送”
- android - Android 工作管理器 - ExistingPeriodicWorkPolicy.KEEP 和 .Replace 之间的区别
- javascript - 预期有一个条件“匹配 URL”的匹配请求 - 未找到 - Angular2+
- android - Android Oreo JobIntentService 在 Android 7 及以下版本中继续在后台运行,在 Android 8 及以上版本中经常崩溃
- dart - 如何通过组件在 AngularDart 应用程序中显示 HTML 片段?
- java - Spring ApplicationContext.close() 不会关闭应用程序
- java - 如何将 JUnit 测试重定向到 Eclipse 中的控制台?