【问题标题】:copying files from one directory to another将文件从一个目录复制到另一个目录
【发布时间】:2012-02-15 15:31:18
【问题描述】:

我正在尝试将专辑封面从我的库(存储为 albumart.jpg)从我的 PC 移动到我的手机。我手机上的所有音乐都是 FLAC 格式,但是,为了节省空间,我将其转换为 MP3 以便在手机上使用。与其手动复制每个专辑封面,我认为可能有一种方法可以在 powershell 中实现自动化。

在我的 PC 上结构是 d:\music\library\%artist%\%album%,在手机上它需要是 e:\media\music\%artist%\%album%。

我知道我必须使用 Get-ChildItem d:\music\library -recurse *.jpg 过滤结果,然后我相信我需要某种疯狂的 ForEach 附加 \%artist %\%album%\ 到指定目录。

这样的事情是否可行或者必须手动完成。

谢谢大家!

【问题讨论】:

    标签: powershell directory copy


    【解决方案1】:

    -replace 会变魔术。

    ls "D:\Music\Library" -r -i *.jpg | % {cp -force $_ ($_ -replace "D:\\Music\\Library", "D:\\Music\\mp3")}
    

    (如果需要同时建立目录结构,请在cp命令中添加-force开关。)

    【讨论】:

    • 嘿 Grapeot,我收到“InvalidOperation: (D:\Music\Library:String) [], RuntimeException”。我运行的脚本是 ls "D:\Music\Library" -r -i *.jpg | % {cp -force $_ ($_ -replace "D:\Music\Library", "D:\Music\mp3")}.这可能是一个简单的解决方法,但我对 powershell 不太熟悉,technet 文章对我没有帮助:(
    • 这很奇怪...也许您可以尝试将-force 开关放在括号后面?如果错误仍然存​​在,您能否提供整个错误消息,尤其是位置信息,例如At line:1 char:3
    • 正则表达式模式无效:D:\Music\Library。在 line:1 char:65 + ls 'D:\Music\Library' -r -i *.jpg | % {cp -force $_ ($_ -replace
    • 我看到了问题。这是因为“\”是正则表达式中的转义字符,因此我们应该在路径中使用“\\”作为“\”。修改后的命令应该是ls "D:\Music\Library" -r -i *.jpg | % {cp -force $_ ($_ -replace "D:\\Music\\Library", "D:\\Music\\mp3")}
    • D'OH >
    猜你喜欢
    • 2017-11-18
    • 2013-06-01
    • 2020-06-22
    • 2014-08-12
    • 2013-10-24
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多