我想使用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)文件,因此它可以为我保存一堆循环遍历文件夹中找到的每个文件的代码。
非常感谢提前!
答案 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)
可以使其更清晰,更易于理解。