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

目录

背景

问题描述

问题

解决方法

代码大致流程

食用办法

结果

背景

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

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

问题描述

每个文件夹下都有一些文件,我要把它们放到同一个文件夹下。

右键运行move.ps1

 

 所有文件都到了新创建的newfolder文件夹下

问题

  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编程知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值