我有一个包含一堆子目录的目录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”的顶级目录,返回列表,然后仅符号链接那些?
答案 0 :(得分:1)
Not sure why you want a batch file. Just type the command.
for /f "delims=" %A in ('dir /b /ad "%userprofile%\desktop\*u*.*"') Do mklink /d "%userprofile%\desktop\b\%~nxA" "%A%
This create a link in a folder called B on the desktop (so create it first) for any folder on the desktop that contains the letter u in the name. See dir /?
.
Note in Windows (NT family) the wildcard operators are regular expressions unlike Dos.
?*net*.*
shows all files that contain net, but don't begin with net.
答案 1 :(得分:0)
Thanks to @CatCat I was able to figure it out. Here's what's now working, for posterity's sake:
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
)