[英]batch script to find the directory where a file is located, copy all files located in that directory and sub-directories to another directory
[英]Copy files in multiple sub-directories to another directory with matching sub-directory names
我似乎無法找到一個好的方法來做標題所說的。 我需要將在各個子目錄中找到的所有文件移動到具有匹配的子目錄名稱的另一個目錄。 我一直在使用的代碼是:
@echo off
IF EXIST path.txt del /f path.txt
:: Above line for test only
for /f %%i in ('DIR /a:d /b "C:\ProgramData\Test\WTM\Source"') do (
echo %%i >>path.txt
)
::Pull sub-directory name from working folder
for /f "delims=" %%a in ('DIR /s /a-d /b "C:\ProgramData\Test\WTM\Source"') do (
for /F %%b in (path.txt) do (
move /y "%%a" "C:\ProgramData\Test\WTM\Destination\%%b\*.*"
)
)
PAUSE
我想要做的是拉出子目錄名稱(因為一些可能會不時從目標中丟失),找到要在源目錄中移動的所有文件,然后使用先前提取的子文件移動文件-directory命名到相應子目錄名下的目標目錄。 所以拉
C:\ProgramData\Test\WTM\Source\123\123.txt,
C:\ProgramData\Test\WTM\Source\456\9681.txt,
C:\ProgramData\Test\WTM\Source\789\1941.txt,
etc...
並將這些文件移動到
C:\ProgramData\Test\WTM\Destination\123\123.txt,
C:\ProgramData\Test\WTM\Destination\456\9681.txt,
C:\ProgramData\Test\WTM\Destination\789\1941.txt,
etc...
我的代碼永遠不會正確運行,錯誤會因我更改而有所不同,但通常我不能將%%b
作為子目錄名稱而不是%b
傳遞,或者我可以使用參數使其工作(設置set %%i = path
然后將%%b
替換為%path%
),但之后它只將文件復制到最后一個子目錄而不是所有這些都歸因於我在那里使用set
命令。
我需要一些指示,我似乎無法讓它做我想要的。 任何和所有指針都表示贊賞! 萬分感謝!
我知道你有這個標記為批處理,但正如@FlorianStraub提到的,你可以使用robocopy將一個目錄鏡像到另一個目錄:
robocopy *.* "C:\src" "C:\dest" /E
要打破此命令:
*.*
表示要復制所有文件 "C:\\src"
是您的源目錄,而 "C:\\dest"
是您的目標目錄。 /E
標志表示遞歸復制所有文件夾,並包含空文件夾。 試試運行robocopy /?
從命令行查看更多選項。
如果您的dest
目錄包含您想要刪除的額外文件,請使用/MIR
標志以1對1鏡像源目錄到目標。 也就是說,它將刪除目標中不存在於源中的任何文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.