在Get-Proccess之后,我不确定如何推断部分数据并在命令中使用该数据
(Get-Process magic)[0].CommandLine
返回
PS C:WINDOWSSystem32> "\NASNAS_SoftwareProgramMagic.exe" "\NASNAS_DatabaseTestSubject"
我想使用结果中给定的(测试主题(目录作为复制项中的路径
Get-ChildItem -Path "XXXXXXXXX" -Include *0.dcm -Recurse | Copy-Item -Destination C:SubjectsNew
由于我不是一个程序员,我希望有人能在我进入错误的对象、字符串等兔子洞之前给我指明正确的方向
提前谢谢。
尝试以下代码片段(我使用硬编码$x
(:
$x = '"\NASNAS_SoftwareProgramMagic.exe" "\NASNAS_DatabaseTestSubject"'
# $x = (Get-Process magic)[0].CommandLine
$arg = ($x | ConvertFrom-Csv -Delimiter ' ' -Header prog, arg).arg
$arg ### \NASNAS_DatabaseTestSubject
Get-ChildItem -Path "$arg" -Include *0.dcm -Recurse | Copy-Item -Destination C:SubjectsNew
在所描述的特定情况下(路径中没有空格(,以下也可以工作:
$arg = $x.split(' ',[StringSplitOptions]::RemoveEmptyEntries)[1].Trim('"')
但是,我更希望ConvertFrom-Csv
cmdlet能够正确处理$x
的任何部分中可能存在的空间。
命令行属性已经是一个字符串(只有powershell 7有这个(。这实际上是一个关于如何获得字符串的一部分的问题。我会这么做的。将-split
放入第一个单词,然后使用Split-Path
获取目录,并将-replace
的双引号中无任何内容。
$commandline = '"\NASNAS_SoftwareProgramMagic.exe" "\NASNAS_DatabaseTestSubject"'
(split-path (-split $commandline)[0] ) -replace '"'
\NASNAS_SoftwareProgram