代码之家  ›  专栏  ›  技术社区  ›  Shoelaced

Symlink名称包含word的所有目录(Windows批处理)

  •  0
  • Shoelaced  · 技术社区  · 8 年前

    我有一个目录A,其中包含一堆子目录,还有一个空目录B。我想创建一个.bat文件,将目录A中所有名为“april”(仅顶级目录)的子目录符号链接到目录B。这可能吗?

    到目前为止我得到的是:

    echo off
    setlocal EnableDelayedExpansion
    title Updating Directories...
    if exist "C:\path\to\directory\a" (
        echo Updating Directories...
        set "dira=C:\path\to\directory\a"
        set "dirb=C:\path\to\directory\b"
        for /f "usebackq delims=|" %%f in (`dir /b "!dira!"`) do (mklink /d "!dirb!\%%f" "!dira!\%%f")
        title Symlinks Created^^!
        echo Done^^!
        pause
    ) else (
        echo Cannot find Parent Directory.
        pause
    )
    

    这是可行的,但它将目录A中的所有子目录符号链接到目录B中。例如,有没有方法可以搜索名称包含“april”的顶级目录,返回列表,然后仅符号链接这些目录?

    2 回复  |  直到 8 年前
        1
  •  1
  •   CatCat    8 年前

    不确定为什么需要批处理文件。只需键入命令。

    for /f "delims=" %A in ('dir /b /ad "%userprofile%\desktop\*u*.*"') Do mklink /d "%userprofile%\desktop\b\%~nxA" "%A%
    

    这将在桌面上名为B的文件夹中为名称中包含字母u的桌面上的任何文件夹创建链接(因此请先创建它)。见 dir /? .

    ?*net*.* 显示包含net但不以net开头的所有文件。

        2
  •  0
  •   Shoelaced    8 年前

    echo off
    setlocal EnableDelayedExpansion
    title Updating Directories...
    if exist "!userprofile!\path\to\directory\a" (
        echo Updating Directories...
        set "dira=!userprofile!\path\to\directory\a"
        set "dirb=!userprofile!\path\to\directory\b"
        for /f "usebackq delims=|" %%f in (`dir /b "!dira!\*april*.*"`) do (mklink /d "!dirb!\%%f" "!dira!\%%f")
        title Symlinks Created^^!
        echo Done^^!
        pause
    ) else (
        echo Cannot find Parent Directory.
        pause
    )