无法弄清楚为什么我的部分复制命令有效,有些则不然

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法弄清楚为什么我的部分复制命令有效,有些则不然相关的知识,希望对你有一定的参考价值。

代码位于底部。简单地说,当我运行代码时,我的.ps1文件移动没有问题,但由于某种原因,任何带有“Lec”作为其名称一部分的文件将弹出以下错误消息:

cp:找不到路径'C: Users Administrator Documents Win213x_Lec_filename.docx',因为它不存在。

我不明白为什么会在识别文件名时发生这种情况,并且我仔细检查确切文件是否在具有确切名称的目录中,但我的ps1文件没有问题。

$sub1 = "Lectures"
$sub2 = "Labs"
$sub3 = "Assignment"
$sub4 = "Scripts"
$DirectoryName = "test"
$Win213CopyFiles = ls C:UsersAdministratorDocumentsWin213Copy
$count = 0
foreach ($i in $Win213CopyFiles)
{
    if ($i -match ".*Lec.*")
    {
        cp $i C:UsersAdministratorDocuments	estLectures
        $count = $count + 1
    }
    elseif ($i -match ".*Lab.*")
    {
        cp $i C:UsersAdministratorDocuments$DirectoryName$sub2
        $count = $count + 1
    }
    elseif ($i -match ".*Assign.*")
    {
        cp $i C:UsersAdministratorDocuments$DirectoryName$sub3
        $count = $count + 1
    }
    elseif ($i -match ".*.ps1")
    {
        cp $i C:UsersAdministratorDocuments$DirectoryName$sub4
        $count = $count + 1
    }

Write-host "$i"
}

## Step 9: Display a message "<$count> files moved"
###################################

Write-host "$count files moved"
答案

Copy-Item期待String作为输入。所以它调用了ToString()对象FileInfo$i方法。它只返回文件名,而不是完整路径。由于未指定源目录,因此使用当前工作目录。解决方案是使用fullname属性中找到的完整路径:

cp $i.fullname C:UsersAdministratorDocuments	estLectures

从管道Copy-Item可以使用FileInfo属性正确处理fullname对象。如果使用Select-Object,你应该记住不要放弃。

以上是关于无法弄清楚为什么我的部分复制命令有效,有些则不然的主要内容,如果未能解决你的问题,请参考以下文章

无法弄清楚有效载荷是如何工作的

我的网站上的 PHP 联系表单错误。 PHP 新手,但我发誓这之前有效并且停止了,我无法弄清楚如何修复它 [重复]

C++ 将向量传递给重载类 - 有些调用语句有效,有些则无效。

我似乎无法弄清楚 quick.db

无法弄清楚如何正确存储命令行参数[关闭]

无法弄清楚为啥我的注销按钮不起作用(php)[重复]