簡體   English   中英

批處理文件到不同文件夾的符號鏈接文件到公共文件夾

[英]batch file to symbolic link files from different folders into common folder

我一直在嘗試從多個來源建立符號鏈接。

我在new目錄中有一個reg.txt文件以及 sort.bat。

reg.txt :-

 redcar1=123456 greencar2=345678

在名為“reg_numbers”子目錄的稱為“ vehicles目錄中,即:- 123456 ,在該目錄中,我有一個名為keyskey的子目錄,帶有一個*.txt文件。

我想將所有“reg_numbers”(解析reg.txt - 在進程中更改文件夾名稱)目錄符號鏈接到 sort.bat 文件所在的new目錄,以及所有keysKey目錄文件(*.txt ),進入new文件夾中的公共keys目錄

所以說:-

  • D:\\vehicles\\123456\\keys\\this.txt
  • D:\\vehicles\\345678\\key\\that.txt

符號鏈接

  • e:\\new\\redcar1\\
  • e:\\new\\greencar2\\
  • e:\\new\\keys\\this.txt
  • e:\\new\\keys\\that.txt

sort.bat 在新文件夾中。

@echo off
setlocal EnableDelayedExpansion

set NEWPATH=%~dp0
set OLDPATH=d:\vehicles

for /f %%d in ('dir /b %NEWPATH%\keys') do (
    if not "%%d"=="not.txt" del /Q "%NEWPATH%Keys\%%d" ::clean out files
)
for /f "tokens=1,2 delims=="  %%a in (reg.txt) do (
    rmdir /Q "%NEWPATH%%%a" ::clean out dir
    mklink /D %NEWPATH%"%%a" %OLDPATH%\"%%b"
    for /f %%c in ('dir /b %OLDPATH%\%%b\keys' ) do (

    mklink %NEWPATH%Keys\"%%c" %OLDPATH%\"%%b"\"%%c" 
    )
)

這可能是一團糟,但它幾乎適用於所有事情,但我無法從key文件夾中獲取that.txt

@echo off
setlocal EnableDelayedExpansion

set "NEWPATH=%~dp0"
set "OLDPATH=D:\vehicles"

for /f %%A in ('2^>nul dir /b /a-d "%NEWPATH%\keys"') do (
    if not "%%~A" == "not.txt" del /Q "%NEWPATH%\Keys\%%~A"
)

for /f "usebackq tokens=1,2 delims==" %%A in ("%NEWPATH%\reg.txt") do (
    rmdir /Q "%NEWPATH%\%%~A"
    mklink /D "%NEWPATH%\%%~A" "%OLDPATH%\%%~B"

    for /f %%C in ('2^>nul dir /b "%OLDPATH%\%%~B\keys" "%OLDPATH%\%%~B\key"' ) do (
        mklink "%NEWPATH%\Keys\%%~C" "%OLDPATH%\%%~B\%%~C"
    )
)

這可能有助於獲取文件this.txtthat.txt符號鏈接。 您有一個keys文件夾和一個key文件夾,但您的代碼只搜索其中之一的目錄。 所以現在dir將搜索兩個目錄。

我還調整了引用並在for變量中使用~以刪除可能的引號。 在需要時添加反斜杠作為路徑分隔符。

set 命令的雙引號是為了確保該值不包含任何不可見的尾隨空格。

for命令中的2^>nul是將 stderr 流重定向到nul ,因此不會輸出dir未找到文件的輸出。

usebackq in for options 更改命令的規則。 雙引號沒有usebackq ,將雙引號解釋為字符串,而不是路徑。 使用usebackq ,可以在路徑上使用雙引號。 %~dp0是一個可能有空格的路徑,所以添加雙引號似乎是個好主意。 查看for /? 尋求更多幫助。

暫無
暫無

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

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