PowerShell 获取某目录下所有的文件、文件夹,以及过滤某文件、文件夹

目录

背景

问题

解决方法

代码大致流程

食用办法

结果

背景

上实验课收集实验报告,同学是通过红蜘蛛上传,教师电脑上会给每一个文件创建一个文件夹,防止同名文件,文件夹名字还是随机的,那么如何把所有实验报告,提取到一个文件夹中呢?

忙了一下午,因为一点shell编程的知识都没有。。。。百度全是垃圾,一点一点拼凑出如下代码。

问题

  1. 不知道怎么得到所有文件,文件夹
  2. 不知道怎么过滤文件,文件夹
  3. 不知道怎么得到当前路径
  4. 不知道这个脚本文件的后缀名是什么
  5. 不知道怎么运行脚本文件
  6. 一开始手写的绝对路径,路径中包含汉字,powershell默认是gbk,我保存的是utf-8,一直报错

解决方法

百度+编程经验,主要查一些函数用法,以及参数

代码大致流程

  1. 创建一个newfolder文件夹用来存储所有实验报告(文件)
  2. 获得当前文件夹的路径
  3. 将当前文件夹中的所有文件,不包括文件夹,获取
  4. 将所有文件复制到newfolder
md newfolder # store the files folder
$x = Split-Path -Parent $MyInvocation.MyCommand.Definition # get the path
$fileList = Get-ChildItem  $x -recurse * | where{!$_.PSIsContainer} # get the files exclude folders
foreach($file in $filelist){ # enum the files list
	if(($file.name -ne 'move.ps1')){ # 'move.ps1' is this program, it don't need copy or move
		echo $file.name #print the file name
		copy $file.fullname newfolder # copy files to the folder named newfolder
	}
}
pause

食用办法

  1. 在某目录下(你需要的那个目录)新建一个文件命名“move.ps1",
  2. 双击打开将上述代码复制到move.ps1中,保存,
  3. 然后右键move.ps1->PowerShell运行,
  4. 正常的话,所有文件都会复制到newfolder文件夹中。

结果

把这个程序给了两位助教同学,得到了好评。自己也积累了一些shell编程知识。

上一篇:powershell 编写的tui界面脚本《电壳别名宝》


下一篇:Spark开发实例(编程实践)