Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell:将双引号内的字符串拆分为数组_Powershell - Fatal编程技术网

Powershell:将双引号内的字符串拆分为数组

Powershell:将双引号内的字符串拆分为数组,powershell,Powershell,给定一个字符串,其中每个路径都用双引号引起来,如何将其拆分为一个数组,每个项目都是双引号内的文字子字符串。例如: $input=read-host "input"; $input.Split(" ") 如果输入字符串为“D:\Path1\file1.txt”“D:\Path2\some[weird,name.txt”“D:\thispath\在quote.txt”之后不被空格分隔,则只要找到空格,不知道引号(但我认为这不是一个单词),它就会分割字符串。我期待这样的输出 D:\Path1\fil

给定一个字符串,其中每个路径都用双引号引起来,如何将其拆分为一个数组,每个项目都是双引号内的文字子字符串。例如:

$input=read-host "input"; $input.Split(" ")
如果输入字符串为
“D:\Path1\file1.txt”“D:\Path2\some[weird,name.txt”“D:\thispath\在quote.txt”
之后不被空格分隔,则只要找到空格,不知道引号(但我认为这不是一个单词),它就会分割字符串。我期待这样的输出

D:\Path1\file1.txt
D:\Path2\some [ weird, name.txt
D:\thispath\is_not_separated_by_space_after_quote.txt
没有双引号。知道如何实现吗?提前谢谢。

编辑 这是一种适合不喜欢使用正则表达式的人的方法,但我相信它应该在这里起作用

$input.Replace('""','" "').replace('" "','","').split(',').replace('"','') 

这样,您可以确保每两个相邻的引号之间有一个空格。添加此项后,您的方法应该会起作用?

您是否想过-[1]每个
$Read Host
调用只获取一个dir?然后循环,直到使用结果为空为止?//[2]使用windows使用的目录选择器对话框?这个…FolderBrowserDialog类(System.windows.Forms)| Microsoft文档-是的,[1]需要太多的用户交互,我尽量避免这种情况。[2]这在某些情况下有效,但无法实现我要做的,即从多个不同的目录将文件拖放到终端,同时减少用户交互的需要。允许任何用户输入并坚持键入…是错误的公式。[格林]如果可能的话,用户输入将被限制为易于控制的方法。/////但是,处理您选择的问题……是您的问题。如果您不介意的话,那么它是可以的。[grin](也是@Tomek。)不要给!
$Input
赋值!恐怕你的方法和我的一样,在两个相邻的引号之间有或没有空格。你编辑的答案确实有效,但需要稍作调整
$Input=read host“Input”;$Input.Replace(“,”).Replace(“,”).split(“,”).Replace(“,”).split(“,”).Replace(“,”)
,而不是使用
作为分隔符,我使用的是
|
,因为这在windows中是一个无效的字符作为文件名。:)是的,这很有意义。