加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

书摘——Windows PowerShell复制文件或文件夹

(2017-01-13 11:18:28)
标签:

it

分类: 读书笔记
Windows PowerShell复制文件或文件夹

By:Anders      Mail:katrina520@163.com

复制文件或文件夹 

想要复制一个文件或文件夹到一个新的位置?那么你必须Copy-Item cmdlet 。举个例子,这里有一个命令从C:/ Scripts 文件夹下复制文件 Test.txt  到C: /Test 文件夹:
 
 
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifPowerShell复制文件或文件夹" />Copy-Item c:/scripts/Test.txt  c:/Test
 
 
要想在 C:/Scripts(包括要覆盖的文件夹) 复制所有项目到 C:/Test ?那么仅仅只要使用一个通配字符,像这样:
 
 
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifPowerShell复制文件或文件夹" />Copy-Item c:/scripts/*  c:/Test
 
 
你要使用的方法就摆在我们的面前:是的,下一个命令是在 C:/Scripts 里只复制 .txt 文件到 C:/Test :
 
 
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifPowerShell复制文件或文件夹" />Copy-Item c:/scripts/*.txt  c:/Test
 
 
最后,这个命令会复制一个文件夹 C:/Scripts 复制到文件夹 C:/Test 里;换句话说,这个复制信息将名为 C:/Test/Scripts 的文件夹。 命令在这:
 
 
http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gifPowerShell复制文件或文件夹" />Copy-Item c:/scripts c:/Test –recurse
 
 
巧合的是,-recurse 参数在这里绝对是关键;省去它的话,则它会把一个scripts文件夹建立在 C:/Test 里,但是 C:/Scripts 中没有文件和文件夹会复制到这个新的位置;你会建立一个 C:/Test/Scripts 文件夹,但是里面没有任何东西。 
 
 
Copy-Item 别名
  • cpi
  • cp
  • copy
关于文件系统的命令有如下一些: 
New-Item 
Copy-Item 
Move-Item 
Remove-Item 
Rename-Item 
Invoke-Item
1、创建一个目录:  New-Item -Path E:\PSTest\NewDir -ItemType Directory –Force  在E盘创建了PSTest\NewDir的目录结构,ItemType指出创建的项的类型,这里是目录"Directory",Force表明若目录结构存在则覆盖。  
2、创建一个文件:  New-Item -Path E:\PSTest\NewDir\new.txt -ItemType File –Force  在E:\PSTest\NewDir创建了new.txt文本文件,ItemType类型为File,存在则覆盖。  还有很多参数,如WhatIf:预判如果执行该命令将发生什么等,详细参数列表及其用法请参阅PowerShell文档,这里只列出了最常用的。
3、复制文件:  Copy-Item -Path E:\PSTest\NewDir\new.txt -Destination D:\ -PassThru –Force  将一个文件从E盘的一个目录复制到D盘,若存在则覆盖。PassThru会强制PowerShell返回命令执行后的结果,方便查看命令是否执行成功。看以看出,Move-Item支持跨驱动器复制文件。 
4、复制目录:  Copy-Item -Path E:\PSTest\NewDir -Destination D:\ -PassThru -Force –Recurse  将E盘中的一个目录复制到D盘,若存在则覆盖。请注意"Recurse"这个参数,只有加上这个参数PowerShell才会复制源目录中的所有子目录及其文件,否则只会复制源目录一个空壳。
5、打开文件:  Invoke-Item C:\Windows\win.ini  Windows会调用指定文件的默认程序来打开文件,就像双击打开文件一样.

以下为简单的处理脚本:拷贝当天(0天内)1小时内的日志文件到其他目录中

 

[python] view plain
  1. <</span>#  
  2. Get-ExecutionPolicy  
  3. Set-ExecutionPolicy Unrestricted  
  4.   
  5. Function:拷贝N天或N小时内的文件  
  6. Author:hzc  
  7. CreateDate: 2016/01/27  
  8. #>  
  9.   
  10. $SourceDir "D:\日志备份"  
  11. $DestinationDir "E:\备份\Log"  
  12. $AddDays 0    #增加的天数,可正可负  
  13. $AddHours -1  #增加的小时,可正可负  
  14. $SourceFileArray Get-ChildItem -Path $SourceDir -Recurse Where-Object -FilterScript {($_.LastWriteTime -gt (Get-Date).AddDays($AddDays).AddHours($AddHours))} Select-Object -ExpandProperty Name  
  15.   
  16. $date Get-Date  
  17. Write-Host "$date 拷贝开始……"   
  18.   
  19. foreach $file in $SourceFileArray ){  
  20. $SourcePath $SourceDir "\" +$file   
  21. Copy-Item -Path $SourcePath -Destination $DestinationDir  
  22.   
  23. $date Get-Date  
  24. Write-Host "$date 完成:" $SourcePath  
  25.  
  26. $date Get-Date  
  27. Write-Host "$date 拷贝完成!"  

其实还可以设置更精确,参考函数:AddYears、AddMonths、AddDays、AddHours、AddMinutes、AddSeconds、AddMilliseconds、AddTicks


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有