2009-11-06 56 views
4

我是Powershell的新手,试图获得一个简单的脚本来运行。PowerShell:如何从源目录中只复制选定的文件?

我有一个我想从src_dir复制到dst_dir的文件列表。我写了一个简单的脚本(这显然是错误的,因为它在执行时没有做任何事情)。

有人可以帮忙检查看看我做错了什么吗?

# source and destionation directory 
$src_dir = "C:\Users\Pac\Desktop\C4new" 
$dst_dir = "C:\Users\Pac\Desktop\csci578-hw3\Prism\C4new" 

# list of files from source directory that I want to copy to destination folder 
# unconditionally 
$file_list = "C4newArchitecture.java", "CustomerData.java" 

# Copy each file unconditionally (regardless of whether or not the file is there 
for($i=0; $i -le $file_list.Length - 1; $i++) 
{ 
    Copy-Item -path $src_dir+$file_list[$i] -dest $dst_dir -force 
} 

回答

9

Oh..that其实很简单:

# source and destionation directory 
$src_dir = "C:\Users\Pac\Desktop\C4new\" 
$dst_dir = "C:\Users\Pac\Desktop\csci578-hw3\Prism\C4new" 

# list of files from source directory that I want to copy to destination folder 
# unconditionally 
$file_list = "C4newArchitecture.java", 
      "CustomerData.java", 
      "QuickLocalTransState.java", 
      "QuickLocalTransState_AbstractImplementation.java", 
      "SaveSessionOK.java", 
      "SessionID.java", 
      "UserInterface.java", 
      "UserInterface_AbstractImplementation.java" 

# Copy each file unconditionally (regardless of whether or not the file is there 
foreach ($file in $file_list) 
{ 
    Copy-Item $src_dir$file $dst_dir 
} 

作为一个程序员,我爱的foreach!

11

假设文件是​​直接理解过程$ src_dir你可以做到这一点多一点,即简单的复制可以是一个班轮:

$file_list | Copy-Item -Path {Join-Path $src_dir $_} -Dest $dst_dir -ea 0 -Whatif 

电子艺界对于-ErrorAction参数和0别名值对应于SilentlyContinue。这会导致Copy-Item忽略如果其中一个源文件不存在就会得到的错误。但是,如果您遇到问题,请暂时删除此参数,以便查看错误消息。

当以交互方式输入这些东西时,我倾向于使用这样的快捷方式,但是在脚本中,最好将它拼出来以提高可读性。另请注意,-Path参数可以采用脚本块,即花括号中的脚本。从技术上讲,Copy-Item cmdlet不会看到scriptblock,只是它的执行结果。这通常适用于任何需要管道输入的参数。删除-WhatIf以使命令实际执行。

+0

wow..that看起来很酷。感谢分享信息! – sivabudh 2009-11-06 05:09:50

0
Get-ChildItem -Path $srcDir | Where-Object { $fileNames -contains $_.Name } | Copy-Item -Destination $dstDir 

这是在某些情况下确实方便,例如:

Get-ChildItem -Filter *.ocr.txt | Copy-Item -Destination $dstDir 
相关问题