“我的完整任务”正在为每个子文件夹获取文件列表文本文件(* .jpg图片的名称)。比重命名* .TXT文件的文件包含文件夹的名称。
示例:
F:\ 189 \ recived -此文件夹(有条件命名为“ MAIN FOLDER”)包含脚本 F:\ 189 \ recieved \ FILELIST.PS1
这些子目录包含* .jpg文件
由于执行脚本,我需要获取文件列表
我的想法是通过2个步骤解决此任务。首先-为每个子文件夹创建文件列表txt文件并默认命名(例如:pctrlst.txt)。第二部分-将默认名称(pctrlst.txt)重命名为目录名称。
我是菜鸟-我知道...如果有人可以问我一个很简单的问题
$subfldr = Get-childitem -Name -Directory *_*
$pctrlst = Get-childitem -Name -Include *.jpg
$subfldr | ForEach-Object { $pctrlst | out-file pctrlst.txt }
为什么脚本只返回父目录的结果?我在MS网站上冲浪了36个小时,但没有找到答案。 我有一个想法,为什么它不能正常工作...因为第一个cmdlet的输出没有成为第二个命令的输入...我如何使它正常工作?
PS:我真的感觉自己像个笨蛋...森林笨蛋...专注的森林笨蛋...
如果您共享一些参考文献的链接,我会很高兴的。
答案 0 :(得分:1)
您的问题提出的问题不是很好,很难确切地了解您的问题。从外观上看,您想要获得一个目录列表,其中包含一个 _ ,然后是这些文件夹中的每个 .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 }
在这里,您正在将文件夹的名称(而不是路径,而只是名称)传递到对象循环,在该对象循环中,您仅在同一变量上运行Out-File,该变量包含当前目录中的许多jpg文件。您只是在这里多次覆盖具有相同数据的相同文件。