我是PowerShell的新手,并希望为POC测试一些东西。 云存储箱中存储了多个文件(File_1.txt,File_2.txt等)。
我想使用通配符将这些文件添加到数组中,然后为每个文件运行一些命令(特定于云)。
我无法在代码中指定-Path,因为文件位于云端,而我没有路径。
以下代码有效:
$files = @("File_1.txt","File_2.txt","File_3.txt")
foreach ($file in $files) {
Run commands on cloud like...delete inbox/$file
}
但是我不能硬编码文件名。我希望使用通配符添加文件名。
$files=@("File*.txt")
foreach ($file in $files) {
Run commands on cloud like...inbox/$file
}
但这不起作用,因为它将File * .txt作为文件的名称。
提前致谢
答案 0 :(得分:0)
您应该使用TraderService
等效的PowerShell,dir
(事实上Get-ChildItem
和dir
是Cmdlet的别名)来使用通配符搜索文件:
ls
$files = Get-ChildItem file*.txt
foreach($file in $files) {
DoSomeStuffWithFile $file
}
返回Get-ChildItem
个对象。如果要在循环中使用文件名FileInfo
,则应引用对象的String
属性:
Name
答案 1 :(得分:-1)
您可以使用字符串插值轻松更新文件编号。以下是这可能如何工作的基本示例:
1 .. 10 |
ForEach-Object {
"hello" | Out-File -Path "File_$_.txt"
}
这里我们生成一个从1到10的数字数组(使用范围运算符..
),然后将其传送到我们的命令(因此放在$_
变量中)。当每个数字通过时,路径使用当前值$_
构建,因此您获得File_1.txt
,File_2.txt
等。
您可以使用其他循环技术,但关键是您可以通过让PowerShell为您替换变量来即时构建文件名/路径。