野路子出身PowerShell 文件操作实用功能

本文出处:http://www.cnblogs.com/wy123/p/6129498.html

因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,
索性就网上各种搜,各种Demo,各种修改,花了半天时间,最后还是拼凑出来能达到效果了。
本身对PowerShell并不熟悉,可能有些弯路,实现的也比较烂,总之是把各种小功能拼凑在一起,最后还是拼凑出来能达到效果了。
如下是原始Demo,比较幼稚,权当是自己记录的笔记了

1,文件信息统计

   如下文件夹下面有六个文本文件,统计这个文件夹下面的文件名称到一个日志文件

    

   将这个文件夹下的文件信息统计出来,存在一个指定路径的文件中,文件是根据时间生成的。

  

如下截图是生成的统计文件信息

  

  如果想要统计文件的全路径的话,直接用FullName即可,$fileName = $file.FullName即可取得文件的全路径。

    

  如果是想便利某一个路径下文件夹下面所有的文件和子文件夹的内容,可以再加上-Recurse参数,也即: $files = Get-Childitem "F:\TestPowerShell\" -Recurse

   

  此时记录的结果就是这样子的了

   

  如果是想统计某一类型的文件,需要加上-Include *.txt参数指定后缀名,也即:$files = Get-Childitem "F:\TestPowerShell\" -Recurse -Include *.txt

2,文件操作(Copy)

  如上建立的文件夹以及子文件夹复制到另外一个路径中,这里新建一个文件夹,用日期和时间命名

   

  运行脚本之后,效果如图,将指定文件夹下的文件和子文件夹下的文件copy到另外一个目录中。

  如果是想把某一个路径(或者多个路径)下的所有(包括子文件夹)下的文件Copy到一个文件夹下

可以便利逐个文件Copy至目标文件夹

foreach ($file in $fileList)
{
    #判断是否是文件,如果是文件,copy值目标文件夹
    if($file -is [System.IO.FileInfo])
    {
        #Copy文件
        Copy-Item $file.PSPath  $filepath\$destinationDir

        #记录copy的日志信息
        $file.FullName | Out-File $filepath\$logfilename -Append
    }
}

效果如图(为了显示出来效果,我将子文件夹中的文件重名了,防止因为重名文件覆盖)

记录的统计信息如下图

最后附上一个上述操作的完成的脚本

CLS

$filepath = "C:"
$name = (get-date).ToString("yyyyMMddHHmmss")
$logfilename = $name+‘.txt‘

#创建日志文件
New-Item -ItemType File -Path $filepath\$logfilename -Force

#目标文件夹名称
$destinationDir = $name
#创建目标文件夹
if(!(Test-Path $filepath\$destinationDir) )
{
    New-Item $filepath\$destinationDir -type directory
}

#输出F:\下所有文件的文件名
$fileList = Get-ChildItem F:\TestPowerShell -Recurse
foreach ($file in $fileList)
{
    #判断是否是文件,如果是文件,copy值目标文件夹
    if($file -is [System.IO.FileInfo])
    {
        #Copy文件
        Copy-Item $file.PSPath  $filepath\$destinationDir

        #记录copy的日志信息
        $file.FullName | Out-File $filepath\$logfilename -Append
    }
}

3,文件内容操作

   如下是文本文件中的内容,如果想读取具体文件的内容,可以get-content $file.pspath这个命令,将文本文件的内容读取出来

  

  如下截图是读取出来的效果

如下是上述操作完整的处理脚本

cls
$files = Get-Childitem "F:\TestPowerShell" -Recurse -Include *.txt
foreach ($file in $files)   #遍历文件
{
    $linenumber = 0
    #获取当前文件的内容
    $content = get-content $file.pspath
    #打印出来文件名称
    Write-Host "******************"
    Write-Host $file
    Write-Host "******************"
    #遍历文件的每一行信息
    foreach ($line in $content)
    {
        #打印出来文件的每一行信息
        Write-Host $line
        #这里当然可以继续处理,比如对当前行信息继续做其他处理
     }
}

  

  到现在为止,文件可以统计了,可以移动了,可以读取出来起具体内容了,
  PowerShell的很多系统函数跟T-SQL或者C#差不多的,可以借助系统函数对文件内容做更加丰富的处理
  往下的工作就不说了,可以做各种处理来满足需求了。

总结:

  PowerShell的功能当然也不只是这些,上述也只是PowerShell的冰山一角,九牛一毛,只是借助其最最基础的功能来满足自己的需求,
  因为对PowerShell用的不多,可能还有非常多的系统命令来实现上述功能,上述操作应该有更加简单更加方便的实现,这里多写几行代码,算是熟悉的一个过程。

  

时间: 2024-10-18 06:03:09

野路子出身PowerShell 文件操作实用功能的相关文章

野路子出身PowerShell 文件操作实用功能 MSSQL123

因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职, 索性就网上各种搜,各种Demo,各种修改,花了半天时间,最后还是拼凑出来能达到效果了. 本身对PowerShell并不熟悉,可能有些弯路,实现的也比较烂,总之是把各种小功能拼凑在一起,最后还是拼凑出来能达到效果了. 如下是原始Demo,比较幼稚,权当是自己记录的笔记了 1,文件信息统计 如下文件夹下面有六个文本文件,统计这个文件夹下面的文件名称到一个日志文件 将这个文件夹下的文件信息统计出来,存在一个指定路

powershell文件权限操作

获取文件或文件夹访问权限: Get-Acl -Path <File or Folder Path> | Format-List 修改文件访问权限: 修改文件访问权限需要用到Set-Acl命令,使用-Path参数指定要修改的文件路径,使用-AclObject参数指定一个对象,该对象相当于一个ACL模板,此ACL模板指定了用户访问资源的权限设定.该对象的设定需要调用"System.Security.AccessControl.FileSystemAccessRule"类. 1

C提高5 高级结构体 文件操作

1,昨天的作业题经典C语言题型 1将全局区二维字符拷贝到堆中 2将栈区二维字符拷贝到堆中 3合并栈区与全局区的二维字符数组 4把数组排序 5打印堆区的二维数组 6释放堆空间 [email protected]:~/high$ cat main.c  #include <stdio.h> #include <stdlib.h> #include <string.h> /********** 释放二级指针方式1,只释放堆中内存 ********/ void free_two

【转载】技术的正宗与野路子

http://kb.cnblogs.com/page/554496/ http://zhangtielei.com/posts/blog-programmer-learn.html 黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. "九阴神抓"本是<九阴真经>中的上乘武功,但当初梅超风夫妇由于拿到的<九阴真经>不完整,学不到里面的内

技术的正宗与野路子_转

黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. "九阴神抓"本是<九阴真经>中的上乘武功,但当初梅超风夫妇由于拿到的<九阴真经>不完整,学不到里面的内功心法,硬是把这门上乘武功练到了邪路上,于是就成了"九阴白骨爪".周芷若为求速成,也练就了这门邪功. 但黄衫女子乃出身武林名门(相传是杨过和小龙女的后人),自然修

野路子码农系列(2)Python中的类,可能是最通俗的解说

啥叫佩奇?啥叫类?啥叫面向对象?后面两个问题以前在大学里"祖传谭浩强"的时候我经常会有所疑问.老师说着一堆什么public, private,我都是一脸懵逼,啥叫私有?为啥要私有?然后就神游天外了-- 后来由于一直接触数据挖掘类的内容,写得那根本不是程序,都是脚本,而且基本上也用不到类这种东西.直到前几天,在一个项目中,我需要对8个分类分别应用同一个模型,我才又回想起了被类支配的恐惧.本文即劫后余生的产物,没有网络上哪些看到想吐的Foo, Bar,只有最通俗易懂的语言. P1 起因 正

Python 文件操作

操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = open('文件路径', '模式') 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内容:] a,追加模式.[可读: 不存在则创建:存在则只追加内容:] "+" 表示可以同时读写某个文件 r+,可读写文件.[可读:可写:可追加] w+,写读 a+,

python基础:python循环、三元运算、字典、文件操作

目录: python循环 三元运算 字符串 字典 文件操作基础 一.python编程 在面向过程式编程语言的执行流程中包含: 顺序执行 选择执行 循环执行 if是条件判断语句:if的执行流程属于选择执行:if语句有三种格式,如下: 在多分支的if表达式中,即使多个条件同时为真,也只会执行一个,首先测试为真: 选择执行 单分支的if语句 if CONDITION: 条件为真分支 双分支的if语句 if CONDITION 条件为真分支 else 条件不满足时分支 多分支的if语句 if CONDI

python文件操作

文件操作:os.mknod("test.txt")        创建空文件fp = open("test.txt",w)     直接打开一个文件,如果文件不存在则创建文件 关于open 模式: w     以写方式打开,a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)r+     以读写模式打开w+     以读写模式打开 (参见 w )a+     以读写模式打开 (参见 a )rb     以二进制读模式打开wb     以二进制写模式打