这个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) }
每个都应该单独工作。我用命令替换了我的实际移动脚本,只是为了写出文件。但这似乎也不起作用。不确定我错过了什么?
答案 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