【问题标题】:How to use wildcards in Windows Powershell V2.0如何在 Windows Powershell V2.0 中使用通配符
【发布时间】:2013-11-05 16:21:30
【问题描述】:

我正在尝试使用 Powershell V2.0 命令行中的 rename 进行简单复制,如下所示:

Copy-Item my_file.* my_file_old.*

我希望它的功能与 DOS 等效

copy my_file.* my_file_old.*

但是,它因“路径中的非法字符”而失败。如果我将通配符 * 替换为特定的文件号,例如1,它工作正常。

我想我基本上是在尝试复制那个 DOS 版本,但是在 Powershell 中,一旦我整理出这个基本版本,我想在其中使用 -Exclude 参数。

我做错了什么?我发现另一个论坛上的一些帖子建议 V2.0 不支持通配符,但我不敢相信。这就像微软说“我们刚刚发布了一个新版本的 Windows,但忘记支持键盘和鼠标”。

【问题讨论】:

    标签: powershell wildcard


    【解决方案1】:

    如果您查看Copy-Item 的帮助,它会告诉您哪些参数支持通配符,哪些不支持。 -Destination 不支持通配符:

    -目的地 指定新位置的路径。要重命名复制的项目,请在值中包含新名称。

      Required?                    false
      Position?                    2
      Default value
      Accept pipeline input?       true (ByPropertyName)
      Accept wildcard characters?  false
    

    你可以用一点点脚本做你想做的事:

    Get-ChildItem my_file.* | Copy-Item -Dest {$_.basename + "_old" + $_.extension} -WhatIf
    

    删除-WhatIf 参数如果您满意它会正确复制文件。

    【讨论】:

      【解决方案2】:

      绝对支持通配符,前提是您正确使用它们。目的地中的通配符很奇怪,并且在大多数情况下不是您想要的。并且将一个文件(或一组文件)复制到自身上(这就是您在这里所做的 - 当您没有为 Copy-Item 指定参数名称时,第一个是源,第二个是目标)几乎可以肯定不是你想要什么。

      copy-item myFile.* -destination DESTPATH
      

      get-childitem -filter myFile.* | Copy-Item -destination DESTPATH
      

      【讨论】:

      • 抱歉,我意识到我做这个例子有点匆忙,并遗漏了对第二个文件名的编辑。我已经在上面澄清了我的问题。我不是试图将文件复制到自己身上,而是复制到同一个文件夹中,但名称已修改,但扩展名(在我的情况下是序号)保持不变。请查看更新后的问题。
      • 为了澄清,处理你的第二个例子,我会尝试做类似get-childitem -filter my_file.* | Copy-Item -destination my_file_old.*的事情,当我以管道形式查看它时,我想知道我是否真的需要一个循环某种遍历文件名并通过重命名进行复制。
      • 这是非常相关信息,应该在您的原始帖子中(我回复了预编辑)。是的,您将需要在管道中使用foreach-object 将文件复制到具有新名称的同一目录(或就地重命名)。
      【解决方案3】:

      这是一个将一堆 .jpg 文件重命名为数字顺序列表 [001.jpg、002.jpg 等] 的示例

      get-childitem *.jpg | foreach-object -begin {$count=1} -process {rename-item -path $_.FullName -newname ('{0:000}.jpg' -f $count++)}
      

      您可以通过调整 *.jpg 和“{0:000}.jpg”部分来调整它以满足您的需求

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-25
        • 2022-11-07
        相关资源
        最近更新 更多