Powershell - 复制到新文件夹

时间:2013-09-05 18:53:01

标签: powershell directory

我正在清理一些日志文件并尝试将其复制到此处创建的新文件夹中。 但它失败了:

$newpath = join-path $f.directoryname\Cleaned $($f.basename + "_new" + $f.extension) 

如果我删除该行中的“\ Cleaned”部分,它可以正常工作。但它将清理过的文件复制到同一个文件夹中,这并不好。 我不确定我传递带有目录名称的新文件夹的方式是否错误。我该怎么做?

Function IIS-CleanUp1($path,$file)
{
    $f = get-item $path\$file1
    $newpath = join-path $f.directoryname\Cleaned $($f.basename + "_new" + $f.extension) 
    Get-Content $f | ? { $_ -match $control -and $_ -notmatch '^\#'} | Out-File $newpath
}

Function Files($path)
{
    $allfiles = Get-ChildItem($path) -name
    New-Item -ItemType directory -Path $path\Cleaned
    foreach ($file1 in $allfiles)
    {
        IIS-CleanUp1($path,$file)
    }

}

$path1 = "C:\Temp\IIS_CCHECK_AUG\IIS_CCHECK_AUG_202"
Files $path1

Q2: 我想删除目录“Cleaned”,如果它已经存在,就在这一行之上。

New-Item -ItemType directory -Path $path\Cleaned

当我尝试以下操作时,它不起作用。

Remove-Item $ path \ Cleaned -force

任何想法。

再次感谢。

-T

2 个答案:

答案 0 :(得分:0)

我认为你需要有两个参数来连接路径。像join-path C:\ users一样(注意空格)。因此,将每条额外路径作为单独的参数。

答案 1 :(得分:0)

您需要通过添加引号来修复第一个路径并获取内部评估以添加\ Cleaned:

$newpath = join-path "$($f.directoryname)\Cleaned" $($f.basename + "_new" + $f.extension)