簡體   English   中英

符號鏈接所有名稱包含單詞的目錄(Windows批處理)

[英]Symlink all directories whose names contain word (Windows Batch)

我有一個目錄A,其中包含一堆子目錄,還有一個空目錄B。我想創建一個.bat文件,將名稱為“ april”(僅頂層目錄)的目錄A中的所有子目錄符號鏈接到目錄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”的頂級目錄,返回列表,然后僅對它們進行符號鏈接?

不知道為什么要批處理文件。 只需鍵入命令。

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

這將在桌面上名為B的文件夾中創建一個鏈接(因此請首先創建一個鏈接),以指向桌面上名稱中包含字母u的任何文件夾。 看到dir /?

請注意,在Windows(NT系列)中,通配符運算符是不同於Dos的正則表達式。

?*net*.*顯示所有包含net的文件,但不以net開頭。

感謝@CatCat,我得以弄清楚。 為了后代的緣故,這是現在正在工作的東西:

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
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM