Powershell副本脚本无法正常运行

时间:2014-02-14 15:07:57

标签: powershell

这个powershell脚本对我不起作用......

gci -path $FromPath -Include ("*.dll", "*.pdp") | ? {$_.Name -match "CSLib|CBCore|Cn|CFramework"} | foreach{write-host("Do I have the files here? : "+ $_.Fullname + " -destination" + $ToPath) }

你基本上可以分为三个部分......

gci -path $FromPath -Include ("*.dll", "*.pdp") |

? {$_.Name -match "CSLib|CBCore|Cn|CFramework"}

foreach{write-host("Do I have the files here? : "+ $_.Fullname + " -destination" + $ToPath) }

每个都应该单独工作。我用命令替换了我的实际移动脚本,只是为了写出文件。但这似乎也不起作用。不确定我错过了什么?

3 个答案:

答案 0 :(得分:1)

我相信你使用-Include的方式不是你想要的;事实上,-Include适用于路径,而不适用于文件。

您可以避免在第一个脚本块中使用-Include

gci -path $FromPath *.dll, *.pdp | ...

答案 1 :(得分:1)

Efran上面所说的将会奏效,但不是因为他说的原因。你可以使用 - 包括你的方式,但它不会像你想象的那样工作。以下是一些解释的例子:

这不会返回任何内容

PS C:\Users\Adil> gci c:\temp\ -include *.xml,*.png

这将返回'c:\ temp下的任何xml或png文件'。注意使用'*'

   PS C:\Users\Adil> gci c:\temp\* -include *.xml,*.png


        Directory: C:\temp


    Mode                LastWriteTime     Length Name
    ----                -------------     ------ ----
    -a---         2/13/2014   7:30 PM       3052 a.xml
    -a---          4/1/2013   9:22 PM      15550 Location Settings_procmon2.png

我没有在这里指定'*',但是使用-recurse,因此我将获得所有包含扩展名的文件'不仅包括在C:\ temp下,还包含子目录

PS C:\Users\Adil> gci c:\temp -recurse -include *.xml,*.png


    Directory: C:\temp\2013.01\09


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-----         8/25/2013   1:17 PM     226095 IMG_0648.PNG
-a---         8/25/2013   3:37 PM     396860 tablet.PNG


    Directory: C:\temp\2013.04


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---         4/14/2013  11:40 PM      20513 Bitcn.xml
-a---         4/14/2013  11:39 PM      18038 Bitcn1.png

答案 2 :(得分:0)

正如Adil指出的那样,你必须在路径或-recurse参数上加上'*'才能使-include子句以所需的方式工作。

这里有一篇关于整个主题的微博文章:

http://blogs.msdn.com/b/powershell/archive/2006/04/25/583260.aspx