使用带有Powershell的get-childitem搜索时如何创建字符串

时间:2014-12-17 22:16:56

标签: powershell

我想使用PowerShell搜索目录并使用派生字符串创建批处理文件(如基于集合的处理)。

例如,我想做类似以下的事情(伪代码):

Set-Content -value Get-ChildItem -Path "C:\temp" | select "SomeString" + name

我的第一个挑战是正确连接字符串。我注意到如果我运行以下命令,它将返回字符串响应的空白。

Get-ChildItem -Path "C:\temp" | select "SomeString" + name 

运行此命令将返回有效的文件名

Get-ChildItem -Path "C:\temp" | select name 

我最终想做类似以下的事情,将其写入文件。

"SELECT c:\somefolder\someExecutable.exe -someParameter " + name

Powershell可以实现吗?如果是这样,这可以帮助我构建一个基于集合处理的批处理(.bat)文件,因此它可以为我保存一堆循环遍历文件夹中找到的每个文件的代码。

非常感谢提前!

1 个答案:

答案 0 :(得分:1)

我不确定你想要什么,但是如果你只是想要一个文件名列表,这些文件名是更大字符串的一部分,应该相当简单。 (至少需要PowerShell 3.0才能使-File开关正常工作。)

Get-ChildItem -Path "C:\temp" -Recurse -File | ForEach-Object{
    Write-Output "SELECT $($_.FullName) -someparameter name"    
} | Set-Content "c:\pathtofile.txt"

这将获取“c:\ temp”下所有目录中的所有文件。对于每个文件,我们创建一个包含完整文件路径的字符串,其中包含前后的一些字符。然后使用Set-Content将其发送到文件。在问题"test" + "ing"中还有其他方法来连接字符串,但使用子表达式$($_.FullName)可以使其更清晰,更易于理解。