Symlink alle mapper, hvis navne indeholder ord (Windows Batch)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har katalog A, som indeholder en masse undermapper og tom mappe B. Jeg vil gerne oprette en .bat-fil, der symboliserer alle undermapper i indeks A, hvis navne indeholder 'april' (kun de øverste niveauer) i Directory B. Er det muligt?


Hvad jeg har hidtil er:


echo off
setlocal EnableDelayedExpansion
title Updating Directories...
if exist "C:path	odirectorya" (
    echo Updating Directories...
    set "dira=C:path	odirectorya"
    set "dirb=C:path	odirectory"
    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
)


Dette virker, men det symboliserer alle undermapper i Directory A i Directory B. Er der en måde jeg f.eks. Kan søge efter på øverste niveau biblioteker, hvis navne indeholder 'april', returnere listen og kun symlink dem?

Bedste reference


Ikke sikker på hvorfor du vil have en batchfil. Skriv blot kommandoen.


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


Dette skaber et link i en mappe kaldet B på skrivebordet (så lav det først) for en mappe på skrivebordet, der indeholder bogstavet u i navnet. Se dir /?.


Bemærk i Windows (NT-familie) Wildcard-operatørerne er regulære udtryk i modsætning til Dos.


?*net*.* viser alle filer, der indeholder net, men begynder ikke med net.

Andre referencer 1


Takket være @CatCat kunne jeg finde ud af det. Her arbejder det nu for eftertiden:


echo off
setlocal EnableDelayedExpansion
title Updating Directories...
if exist "!userprofile!path	odirectorya" (
    echo Updating Directories...
    set "dira=!userprofile!path	odirectorya"
    set "dirb=!userprofile!path	odirectory"
    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
)