Batch file 将文件夹从一个子目录批量移动到另一个包含相同编号的子目录
我有一个文件夹,想“合并”文件夹。 我的意思是:如果b\*\中存在一个文件夹,并且包含p\*\中某个文件夹的编号,请将文件夹从b移动到p e、 g.将Batch file 将文件夹从一个子目录批量移动到另一个包含相同编号的子目录,batch-file,directory,Batch File,Directory,我有一个文件夹,想“合并”文件夹。 我的意思是:如果b\*\中存在一个文件夹,并且包含p\*\中某个文件夹的编号,请将文件夹从b移动到p e、 g.将b\p 11-20\11\u abc移动到p\p\u 11\u 20\11 我目前有: @Echo off SETLOCAL ENABLEDELAYEDEXPANSION cd /d "%~dp0" for /f %%a IN ('dir /b "%~dp0\p\"') do ( set &qu
b\p 11-20\11\u abc
移动到p\p\u 11\u 20\11
我目前有:
@Echo off
SETLOCAL ENABLEDELAYEDEXPANSION
cd /d "%~dp0"
for /f %%a IN ('dir /b "%~dp0\p\"') do (
set "tmp=Y"
for /f %%b IN ('dir /b "%~dp0\p\%%a\"') do if defined tmp (
echo %%b
)
set "tmp="
)
这为我提供了数字(例如11,12,13,21,22,23),现在我需要一种方法来找出,如果一个文件夹在b\*\。。。与该前导号码一起存在。如果是,则需要将其移动到相应的p\*\。。。文件夹我找到了一个解决方案。它不漂亮,也不是很快,但它完成了任务 我基本上做的是循环浏览\p中的每个文件夹。使用每个文件夹的编号,我循环\b中的每个文件夹。对于在\b\n中找到的每个文件夹,我检查它是否以当前\p\n文件夹的编号开头;如果是,请移动文件夹
@Echo off
SETLOCAL ENABLEDELAYEDEXPANSION
cd /d "%~dp0"
for /f "delims=" %%a IN ('dir /b "%~dp0p\"') do (
set "tmp1=Y"
for /f "delims=" %%b IN ('dir /b "%~dp0p\%%a\"') do if defined tmp1 (
set "tmp2=Y"
for /f "delims=" %%c IN ('dir /b "%~dp0b\"') do if defined tmp2 (
set "tmp3=Y"
for /f "delims=" %%d IN ('dir /b "%~dp0b\%%c\"') do if defined tmp3 (
set "tmpstr=%%d"
set "tmpstr=!tmpstr:~0,2!"
if "!tmpstr!"=="%%b" (
echo moving folder %%d to %%b ...>>log.txt
echo moving folder %%d to %%b ...
move "%~dp0b\%%c\%%d" "%~dp0p\%%a\%%b"
)
)
set "tmp3="
)
set "tmp2="
)
set "tmp1="
)
您应该从
cmd
@Gerhard中查看robocopy/?
。感谢您的推荐。在今天的工作中,我接近于优化这个程序。我使用了2个嵌套for循环将\b\文件夹的所有路径写入一个.txt文件。然后我遍历所有\p\文件,并搜索.txt中是否有匹配的数字。这是快得多,但我被困在移动部分。我早上在一次额外的试驾中测试了这个程序,它成功了。当我下午运行程序时,移动部分(tryed xcopy,move,robocopy)不起作用,因为我想到了安全原因。我明天会详细调查的。