问问题
204 次
2 回答
1
可能有更优雅的方法,但您可以这样做:
1. 将“*”附加到您的参数值并对其使用 Test-Path。在这种情况下,您将其视为文件夹,因此c:\test将变为c:\test\ *。
2a. 如果 Test-Path 返回true,则您有一个文件夹并且可以继续复制其内容。
2b。如果 Test-Path 返回false,请转到步骤 3。
3. 按原样对参数使用 Test-Path。如果它返回true,那么它是一个文件。
更新
实际上,它比我想象的要简单得多。您可以将参数 PathType 与 TestPath 一起使用,并指定您是在查找文件夹还是文件。
-PathType Container
将寻找一个文件夹。
-PahType Leaf
将寻找一个文件。
于 2012-08-07T19:05:34.717 回答
0
我会确定它是文本文件还是文件夹,然后从那里开始。下面的函数应该让你开始,在脚本运行后它可以像这样执行Copy-Thing -filename "sourcefile.txt" -Destination "C:\place"
Function Copy-Thing([string]$fileName,[string]$destination){
$thing = Get-Item $fileName
if ($thing.Extension -eq ".txt"){
Get-Content | %{
Copy-Item -Path $_ -Destination $destination
}
}
elseif ($thing.PSIsContainer){
Get-ChildItem -Path $fileName | %{
Copy-Item -Path $_.FullName -Destination $destination
}
}
else{
Write-Host "Please specifiy a valid filetype (.txt) or folder"
}
}
于 2012-08-07T20:01:30.507 回答