我找到了這段代碼,它完成了我所要做的事情的50%。
setlocal enabledelayedexpansion enableextensions
for /d %%f in (*) do (
設定N=%%f
設定N=!N:~0,-2!
ren "%f" "!N!"
)
我所使用的檔案夾結構有5位數的專案編號,后面是下劃線和一個修訂字母。上面的代碼洗掉了下劃線和修訂字母,只留下專案編號作為名稱。然而,當有一個專案編號有多個修訂時,它就會忽略它們。
檔案夾名稱例子:
12000_A
10200_A
10200_B
10200_C
50000_A
運行代碼后的檔案夾名稱結果。
12000
10200
10200_B
10200_C
50000
我希望發生的事情是,有多個修訂的檔案夾中的所有檔案將被合并到一個父檔案夾中。
預期的結果:
12000
10200 (檔案夾包含A、B、C版本的檔案)
50000
這可能嗎?提前感謝
uj5u.com熱心網友回復:
ren 命令如果新的檔案或目錄名已經存在,就會失敗,所以你不能用它來合并目錄。move 命令也不太有用,因為當你試圖將一個目錄移動到一個現有目錄時,它會將整個源目錄而不是其內容移動到目的地。
你可以使用xcopy命令來首先復制和合并源目錄,同時使用rd命令來最終洗掉成功復制的源目錄,然后:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem // Iterate through all the directories in the current location:
for /D %I in (".*") do (
rem //從目錄名中分離出第一個`_`和后面的一切:
for /F "delims=_ eol=_"/span> %%J in ("%~nxI"/span>) do (
rem //將源目錄的內容復制到新目錄:
xcopy /E /I /Y "%%~I" "%%~dpI%%J" && (
rem //復制成功后洗掉源目錄:
ECHO rd /S /Q "%%~I"。
)
)
)
endlocal
退出/B
測驗后,洗掉大寫的ECHO命令,以便真正洗掉目錄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/329601.html
標籤:
