Powershell读取CSV,然后在逗号处拆分其中一个字符串,但如果在引号内则不拆分
所以首先我要做的是 我有一个CSV文件,其中有一个要传递给Robocopy的参数列表 我使用Import csv打开此文件并将其传递给robocopy-我发现有一些文件夹无法复制-因此为了停止错误,我排除了它们-但我发现在将它们传递给robocopy之前需要拆分它们。我想能够做的是引用类似于CSV引用的内容-这样拆分就不会在引号内拆分 所以split(“我的文档”、“坏的,路径”)给出 而不是Powershell读取CSV,然后在逗号处拆分其中一个字符串,但如果在引号内则不拆分,powershell,Powershell,所以首先我要做的是 我有一个CSV文件,其中有一个要传递给Robocopy的参数列表 我使用Import csv打开此文件并将其传递给robocopy-我发现有一些文件夹无法复制-因此为了停止错误,我排除了它们-但我发现在将它们传递给robocopy之前需要拆分它们。我想能够做的是引用类似于CSV引用的内容-这样拆分就不会在引号内拆分 所以split(“我的文档”、“坏的,路径”)给出 而不是 My Documents Bad Path 我在想一个可能的研究途径是通过一些类似CSV的处理来实现
My Documents
Bad
Path
我在想一个可能的研究途径是通过一些类似CSV的处理来实现它——我不确定从哪里开始找到一个可以实现这一点的命令
这是我的测试代码
import-csv "R:\t.csv" | where { $_.class -eq "PC1" } | % {
$_.DirExclusions
$_.FileExclusions
$DirExclusions = $_.DirExclusions
$FileExclusions = $_.FileExclusions
$DirExclusions
$FileExclusions
if ($DirExclusions -ne "" ) { $XD ="/XD" }
if ($FileExclusions -ne "" ) { $XF ="/XF" }
robocopy "$($_.Folder)" "R:\Backups\TEST" *.* /r:0 /w:1 $XD $DirExclusions.split(",") $XF $FileExclusions.Split(",")
}
CSV文件
类,文件夹,目录排除,文件排除PC1,C:\Users\e156479,“*,My
文档,“硬,路径”,ntuser
显示其排除的内容的输出
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------
Started : Thu Jun 14 14:07:32 2018
Source : C:\Users\e156479\
Dest : R:\Backups\TEST\
Files : *.*
Exc Files : *ntuser*
Exc Dirs : My Documents
Hard
Path
.*
Options : *.* /COPY:DAT /R:0 /W:1
实际代码更改路径,以便处理\和C$类型共享,从而使所有源目录的备份路径一致-我已删除所有处理,以便使问题变得明显这应该可以做到:
$myLine = 'Class,Folder,DirExclusions,FileExclusions PC1,C:\Users\e156479,".*,My Documents,""Hard, Path""",ntuser'
$myLine -replace '""(.*),(.*)"""','$1#$2' -split ',' -replace '#', ','
如果由于任何原因不能使用“#”,可以使用另一个虚拟分隔符,例如。G“!”Ahhh!谢谢-使用正则表达式在引号中查找-将其更改为字符串中不存在的某个(#),拆分它-然后将其更改回-当然,我不确定引用-最后我使用了$DirExclutions=$DirExclutions-replace“”(.*),(.*),'$1#$2'-split','-replace'.','或$DirExclutions=$DirExclutions-replace'(.*),(.*),'$1#$2'-split','-replace'-replace'-
$myLine = 'Class,Folder,DirExclusions,FileExclusions PC1,C:\Users\e156479,".*,My Documents,""Hard, Path""",ntuser'
$myLine -replace '""(.*),(.*)"""','$1#$2' -split ',' -replace '#', ','