【发布时间】:2021-01-15 10:47:41
【问题描述】:
我正在通过字符串参数将一个字符串从 Python 传递到我的 powershell 脚本中。该字符串是我需要从一台机器复制到另一台机器的文件列表。我使用 for each 循环来处理此列表中的每个文件。我遇到的唯一问题是我不知道如何用逗号分隔列表。
我用来调用此脚本的 python 如下所示(出于安全原因,删除了一些变量)
fileList = '("\\\\[computerIP]\D$\PI_Backup\pibackup_23-Sep-20_00.15.00.txt", "\\\\[computerIP]\D$\PI_Backup\pibackup_23-Sep-20_12.15.00.txt", "\\\\[computerIP]\D$\PI_Backup\pibackup_24-Sep-20_00.15.00.txt")'
subprocess.run(['powershell.exe', '.\CopyFiles.ps1', '-filelist:', folderPathList, '-computerIP:', computerIP, '-userName:', userName, '-userPass:', userPass, '-destPath:', destinationPath, '-filepath:', sourcePath])
我在 powershell 中使用的循环如下所示
#Cycles through array copying files over
foreach ($file in $fileList)
当我使用foreach($file in -split $filelist) 时,我可以用空格分隔我的列表,但它不允许我用逗号分隔。我正在复制的某些文件的名称中可能有空格,因此我需要能够用逗号而不是空格分隔。
我也尝试过foreach ($file in ($fileList -split ',') ),但这似乎只是复制了我数组中的最后一个文件。
【问题讨论】:
-
因此您将参数传递给 PowerShell 脚本。参数的数据类型是什么?
-
foreach 循环的正文中是否有与问题相关的内容?如果没有,请从问题中摆脱它
-
@Bill_Stewart 这是一个字符串。
-
这是一个字符串?字符串是如何分隔的?如果
,(不推荐),那么可以写( foreach $fileName in ($myParameter -split ',') ) { ... -
关于
-split运算符的帮助主题包含很多有用的信息:help about_Split。
标签: python arrays string powershell split