目录
背景
上实验课收集实验报告,同学是通过红蜘蛛上传,教师电脑上会给每一个文件创建一个文件夹,防止同名文件,文件夹名字还是随机的,那么如何把所有实验报告,提取到一个文件夹中呢?
忙了一下午,因为一点shell编程的知识都没有。。。。百度全是垃圾,一点一点拼凑出如下代码。
问题
- 不知道怎么得到所有文件,文件夹
- 不知道怎么过滤文件,文件夹
- 不知道怎么得到当前路径
- 不知道这个脚本文件的后缀名是什么
- 不知道怎么运行脚本文件
- 一开始手写的绝对路径,路径中包含汉字,powershell默认是gbk,我保存的是utf-8,一直报错
解决方法
百度+编程经验,主要查一些函数用法,以及参数
代码大致流程
- 创建一个newfolder文件夹用来存储所有实验报告(文件)
- 获得当前文件夹的路径
- 将当前文件夹中的所有文件,不包括文件夹,获取
- 将所有文件复制到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
食用办法
- 在某目录下(你需要的那个目录)新建一个文件命名“move.ps1",
- 双击打开将上述代码复制到move.ps1中,保存,
- 然后右键move.ps1->PowerShell运行,
- 正常的话,所有文件都会复制到newfolder文件夹中。
结果
把这个程序给了两位助教同学,得到了好评。自己也积累了一些shell编程知识。