Powershell 获取每个子文件夹的文件列表|每个文件列表放在txt文件中,该文件放在它描述和命名的文件夹中,如此文件夹 解决了的

Powershell 获取每个子文件夹的文件列表|每个文件列表放在txt文件中,该文件放在它描述和命名的文件夹中,如此文件夹 解决了的,powershell,foreach,subdirectory,filelist,file-listing,Powershell,Foreach,Subdirectory,Filelist,File Listing,对于包含图像的每个子文件夹*。jpg需要创建图像名称的文本文件列表(不带扩展名)。文本文件的名称应与其目录相同 例如,您有相同的目录方案: C:\scriptfolder \-filelist_script.ps1的父文件夹 C:\scriptfolder\subfolder1 \-包含一些jpg文件 C:\scriptfolder\subfolder2 \-包含一些jpg文件 C:\scriptfolder\subfolderN \-包含一些jpg文件 脚本工作的结果将是: C:\script

对于包含图像的每个子文件夹*。jpg需要创建图像名称的文本文件列表(不带扩展名)。文本文件的名称应与其目录相同

例如,您有相同的目录方案:

C:\scriptfolder \-filelist_script.ps1的父文件夹
C:\scriptfolder\subfolder1 \-包含一些jpg文件
C:\scriptfolder\subfolder2 \-包含一些jpg文件
C:\scriptfolder\subfolderN \-包含一些jpg文件

脚本工作的结果将是:

C:\scriptfolder\subfolder1\subfolder1.txt
“subfolder1.txt”-“subfolder1”中所有图像(.jpg)的列表
C:\scriptfolder\subfolder2\subfolder2.txt
“subfolder2.txt”-“subfolder2”中所有图像(.jpg)的列表
C:\scriptfolder\subfolderN\subfolderN.txt
“subfolderN.txt”-“subfolderN”中所有图像(.jpg)的列表


解决方案

$gl = Get-Location 
$folderlist = Get-ChildItem -path $gl\ -Recurse -Directory -Name  
foreach ($folder in $folderlist) {
    Get-ChildItem $gl\$folder\*.jpg -File | 
    Foreach-Object {$_.BaseName} |
    Out-file -path $gl\$folder\$folder.txt  -Force;
} 

使用“BaseName”参数从显示的数据中排除文件扩展名。

如果您需要获取扩展名为的文件名,请将其更改为“Name”

您的问题问得不太清楚,很难准确理解您的问题。从外观上看,您希望获得一个目录列表,其中包含一个\uu,然后这些文件夹中的每个.jpg文件将其附加到文本文件中。这很简单:

$folder = "C:\Users\user\Documents"

foreach ($subfolder in (Get-childitem -Directory $folder\*test*)) {
    Get-Childitem $subfolder -Name -filter *.csv | Out-file pctrlst.txt -append
}
您的代码中有几个问题:

$subfldr = Get-childitem -Name -Directory *_*
此处使用-Name只返回文件夹名称,而不返回完整路径。如果您在PowerShell中更改为该目录,则不会出现问题,但不需要该标志

$pctrlst = Get-childitem -Name -Include *.jpg
-Include
需要更改为
-Filter

$subfldr | ForEach-Object { $pctrlst | out-file pctrlst.txt } 

在这里,您通过管道将文件夹的名称(不是路径,只是名称)传递到一个对象循环,在该循环中,您只需在同一个变量上运行文件,该变量包含当前目录中的多个jpg文件。您只是在这里用相同的数据多次覆盖相同的文件。

不清楚您的具体问题是什么-哪个父目录?您的
Get ChildItem
调用彼此独立。要使
Get ChildItem-Include
在没有
-Recurse
的情况下工作,您必须(不幸地)通过
*
Get ChildItem*-Include*.jpg
。请直接在您的问题中添加澄清。通常,
获取帮助
提供帮助;添加
-Detailed
包括参数描述。这相当不错$gl=Get Location$folderlist=Get ChildItem-path$gl \-Recurse-目录-名称foreach($folderlist中的folder){$gciFiles=Get ChildItem$gl\$folder\*.jpg-File | foreach对象{$\.BaseName}Out-File-path$gl\$folder\$folder.txt-Force;}感谢所有回答的人!伙计们,我的全部任务是获取所有子文件夹的文件列表。并将其命名为与包含它的文件夹相同的名称。示例:F:\\189\Received \-此文件夹包含脚本(有条件地命名为“主文件夹”)F:\\189\Received\subfolder1\F:\\189\Received\subfolder2\These目录包含*.jpg文件作为执行脚本的结果,我需要获取文件列表F:\\189\Received\subfolder1\subfolder1.txt F:\\189\Received\subfolder2\subfolder2.txt等等。。。我真的很抱歉我的英语。我希望你明白我的意思。。。