【问题标题】:PowerShell mklink on multiple files with regular expressions带有正则表达式的多个文件上的 PowerShell mklink
【发布时间】:2014-05-08 14:21:37
【问题描述】:

我有一堆名称中具有相似前缀的文件夹,我想为这些文件夹创建符号链接,以便在尊重原始文件夹命名约定的同时删除前缀。以下是一些示例文件夹名称:

2013.Folder1
2013.Folder2
2014.Folder1

在文件夹中:

C:\Users\madeupname\Documents

在 linux 中,我会这样做

ln -s /home/madeupname/Documents/201* /home/madeupname/Documents/links/

(此代码可能不完全正确,因为我现在手头没有 linux 机器)

在 Windows PowerShell 中,我可以手动处理这 3 个文件:

cmd /c mklink C:\Users\madeupname\Documents\links\2013.Folder1 C:\Users\madeupname\Documents\2013.Folder1

但这并不好,因为真正的目录有很多文件!

【问题讨论】:

标签: powershell batch-processing mklink


【解决方案1】:

如果我理解正确,这对你有用:

$path = "C:\Users\madeupname\Documents"

dir $path -Directory | 
% { cmd /c mklink C:\Users\madeupname\Documents\links\$_.name $_.fullname /d}

【讨论】:

  • 不走运。使用 PowerShell ISE,我得到: Get-ChildItem:找不到与参数名称“目录”匹配的参数。在 line:3 char:21 + dir $path -Directory
  • 我认为 -Directory 是在 v3 中添加的。而是使用dir $path | ?{$_.PSIsContainer} | %{cmd /s mklink c:\users\madeupname\documents\links\$_.name $_.fullname /d} 此外,如果这是针对当前用户的,您可以通过将c:\users\madeupname 替换为$env:userprofile 来使其更可靠
【解决方案2】:

我找到了一个 GUI 来执行此操作,但这是作弊,所以我不会将此标记为答案:

http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多