2012-12-28 27 views
1

我想在某些文件夹中的所有文件移动到新创建的文件夹中的同一个文件夹。为了更容易理解,请参见下面的示例(输入被示出左,输出右示出):MOVE批量文件

C:\1\A\file1.tif   C:\1\A\Named\file1.tif 
     file2.tif       file2.tif 
     file3.tif  ==>     file3.tif 
C:\1\B\file1.tif   C:\1\B\Named\file1.tif 
     file2.tif       file2.tif 
     file3.tif       file3.tif 

在上面的例子中,我只示出每一个文件夹中的前三个文件,但总数量可以不同(通常每个文件夹有1000个文件)。此外,我只显示了两个文件夹(A和B),但文件夹的总数也可能不同(通常约10个文件夹)。最后,我只显示文件夹'1',但这些文件夹的数量也可能有所不同(通常为'1'到'10')。所以我正在寻找一个脚本,可以独立于文件或文件夹的数量来执行这些操作,而不依赖于文件夹/文件的名称(我仅选择'1','A'和'file1.tif'作为示例)。

这个想法是,现在我必须在文件所在的每个文件夹(上面的例子中的'A'和'B')中手动创建空文件夹(在上面的例子中称为'Named')。然后我必须手动将所有文件移动到新创建的文件夹'Named'中。我必须为所有文件夹(大约100)执行此操作。如果我只需要做一次,我就可以手动完成整个过程,但问题是我必须多次执行此过程:-)。所以自动化会节省很多时间。

有谁知道一个脚本,可以做到这一点?非常感谢!

回答

0

全面的测试之后,这个伟大的工程。但是,由于它是很多文件,因此在使用实际数据之前,可能需要设置一个小测试环境(如在您的示例中),首先使用它。

setlocal enabledelayedexpansion 
cd C:\rootfolder 
for /f "tokens=*" %%a in ('dir /s /b /a:d') do (
attrib "%%a\*.*" | find "File not found" 
if !errorlevel!==1 (
if not exist "%%a\Named" md "%%a\Named" 
xcopy "%%a\*.*" "%%a\Named" 
del "%%a\*.*" /f /q 
) 
) 
+0

嗨巴厘岛,谢谢你的剧本。我通过将第一行更改为“cd C:\ 1”来测试脚本。这工作完美。但正如我在第一篇文章中提到的,'1'文件夹不是唯一的文件夹,通常有10个文件夹(如1到10)。当我通过“cd C:\”替换脚本中的第一行时(假设除了文件夹1到文件夹10以外,C盘中没有其他文件夹),该脚本仍然有效,但我得到了另外一个名为'Named '在'1'文件夹中(所以C:\ 1 \ Named)。 9个文件夹('2'到'10')也是如此。但这不是一个大问题。 – Loek

+0

@Loek不用担心,我把rootfolder路径作为一种占位符的文件夹所有文件夹中(如您用C的例子:有没有其他的文件夹)所以,除非你有某种形式的根文件夹中很难如果你知道我的意思,你可以区分你想要的和不想要的。当我测试时,我确实发现了这个问题,但我认为我已经修复了它,我会做更多的调试:) –

+0

我刚测试了我的脚本,但它对我来说似乎很好。我刚创建了一个'test'文件夹,下面有2个文件夹,'a'和'b',每个文件夹都有2个文本文件,并且工作正常。是否有可能创建一个基础文件夹并将所有内容移动到那里并查看它是否有效? –

1

测试了一下,这可能工作,在命令文件

做一个cmd文件与这些线路

for /r %%a in (*.*) do call :singlecopy %%a 
goto :eof 

:singlecopy 
set src=%~p1 
set dst=%~p1NAMED 
set file=%~n1%~x1 
rem replace NAMED in src with nothing 
set srctst=%src:NAMED=% 
rem if src and srctst are still the same, copy 
if %srctst%==%src% robocopy %src% %dst% %file% /move /create 
goto :eof 
+0

谢谢您的建议。我尝试了CMD(管理员)的代码,但没有奏效。我得到了以下结果(只显示第一次迭代):pastebin.com/3VtnWpPE http://puu.sh/1Hdh0 – Loek

+0

固定的客源目的​​地和文件选项 – rene

+0

我尝试了新的脚本,并做了一些。但不是正确的。我结束了在此位置的文件:C:\ 1 \名为\名为\名为\名为\名为\名为\名为\ ... \名为\名为\名为\名为\ file1.tif等(共42个NAMED文件夹)。又见这个截图:http://puu.sh/1HBBQ.png同为C:\ 2 \名为\名为\ ... – Loek