![](/img/trans.png)
[英]Move .txt files in different folders to a single folder using Batch file
[英]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
,在該目錄中,我有一個名為keys
或key
的子目錄,帶有一個*.txt
文件。
我想將所有“reg_numbers”(解析reg.txt
- 在進程中更改文件夾名稱)目錄符號鏈接到 sort.bat 文件所在的new
目錄,以及所有keys
或Key
目錄文件(*.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.txt
和that.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.