我已经使用Powershell一天了,我需要使用循环返回文件夹中每个文件的文件名。这是我目前拥有的:
$filePath = 'C:\Users\alibh\Desktop\Test Folder' #the path to the folder
cd $filePath
Get-ChildItem $filePath |
ForEach-Object{
$fileName = "here is where I return the name of each file so I can edit it
later on"
}
我想比较文件夹中不同文件的名称,以后再编辑或删除文件;但在此之前,我首先需要能够逐个获取每个文件的名称。
编辑:非常感谢
答案 0 :(得分:0)
仅对于循环中的每个文件名,您可以执行以下操作:
Get-ChildItem $filepath -File | Foreach-Object {
$fileName = $_.Name
$fileName # Optional for returning the file name to the console
}
对于仅循环中的每个文件名及其路径,您可以执行以下操作:
Get-ChildItem $filepath -File | Foreach-Object {
$fileName = $_.FullName
}
说明:
通过这种代码结构,默认情况下,您只能访问Foreach-Object
脚本块中的每个文件名,但最后一个对象传递给循环除外。
$_
或$PSItem
代表Foreach-Object {}
脚本块中的当前对象。它包含Get-ChildItem
返回的单个对象的所有属性。通过将$_
结果传送到Get-ChildItem
或Get-Member
变量本身,您可以有效地查看$_
变量可访问的所有属性,如下所示:
Get-ChildItem $filepath -File | Get-Member -MemberType Property
TypeName: System.IO.FileInfo
Name MemberType Definition
---- ---------- ----------
Attributes Property System.IO.FileAttributes Attributes {get;set;}
CreationTime Property datetime CreationTime {get;set;}
CreationTimeUtc Property datetime CreationTimeUtc {get;set;}
Directory Property System.IO.DirectoryInfo Directory {get;}
DirectoryName Property string DirectoryName {get;}
Exists Property bool Exists {get;}
Extension Property string Extension {get;}
FullName Property string FullName {get;}
IsReadOnly Property bool IsReadOnly {get;set;}
LastAccessTime Property datetime LastAccessTime {get;set;}
LastAccessTimeUtc Property datetime LastAccessTimeUtc {get;set;}
LastWriteTime Property datetime LastWriteTime {get;set;}
LastWriteTimeUtc Property datetime LastWriteTimeUtc {get;set;}
Length Property long Length {get;}
Name Property string Name {get;}
答案 1 :(得分:0)
这是一个奇怪的解决方法,用于获取每个文件的完整路径(在字符串上下文中),在文件夹路径中添加通配符:
Get-ChildItem $filePath\* | ForEach { "$_" }