多くのファイルとフォルダーを含むディレクトリがあり、そのディレクトリ内のすべてのファイルとフォルダーから別のフォルダーへのシンボリックリンクを作成したいが、1 つのフォルダーを除外したい
助言がありますか?
多くのファイルとフォルダーを含むディレクトリがあり、そのディレクトリ内のすべてのファイルとフォルダーから別のフォルダーへのシンボリックリンクを作成したいが、1 つのフォルダーを除外したい
助言がありますか?
@echo off
set source=c:\source\directory
set target=c:\target\directory
set exclude=DoNotLinkThisDirectory
forfiles /P "%source%" /C "cmd /c if @isdir==TRUE (if not @file==\"%exclude%\" mklink /d \"%target%\@file\" @path ) else ( mklink \"%target%\@file\" @path )"
編集 - findstr コマンドがファイル/フォルダー リストをフィルター処理する場合に /G:file を使用して、複数の除外を「簡単に」追加できるように更新されました
@echo off
set "source=c:\source\directory"
set "target=c:\target\directory"
set "exclude=%temp%\exclude.txt"
(
rem exclude files/dires with these strings into full path
echo .txt
echo pipe.cmd
rem escaped backslash and initial and final quotes to avoid partial matches
echo "c:\\source\\directory\\something.txt"
rem exclude thisNot file/directory from source directory
echo "%source:\=\\%\\thisNot"
)> "%exclude%"
forfiles /P "%source%" /C "cmd /c (echo @path|findstr /i /v /g:"%exclude%" >nul) && if @isdir==TRUE (mklink /d \"%target%\\\"@file @path) else (mklink \"%target%\\\"@file @path)"
del "%exclude%" > nul