将文件移动到一个目录

时间:2014-02-21 04:46:05

标签: batch-file

我正在制作批处理脚本,将子子文件夹中的所有图像向下移动到批处理脚本上方的图层。例如:

漫画\ move.bat

comics \ series 000 \ series 000 blah \ 01.jpg,02.jpg等。

comics \ series 001 \ series 001 blah \ series blah \ 01.jpg,02.jpg等。

进入

漫画\系列000 \ 01.jpg,02.jpg等。

漫画\系列001 \ 01.jpg,02.jpg等

我尝试了几种变体 for / r %% i in(* .jpg)do move“%%〜fi”“%% ~pi * .jpg”

但它不会做任何事情。我拥有它的一种方法是将所有图像移动到与运行脚本相同的文件夹中,但这是我得到的最接近的文件。清理现在空的文件夹也不错!

3 个答案:

答案 0 :(得分:0)

在根文件夹中创建一个包含以下内容的.bat文件,然后双击它。

@echo off
for /f "usebackq tokens=*" %%d in (`dir /s /b /o:n /ad`) do (
  cd "%%d"
  for /f "usebackq tokens=*" %%f in (`dir /b /o:n /a-d`) do (
    move /y "%%f" ..
  )
)
pause

为了解释代码,外部循环递归地迭代目录并cd进去。内部循环迭代目录中的所有文件并将其向上移动一个。移动中的/y标志是禁止提示。使用dir /?来解释所有dir标志。关于for部分,我从https://stackoverflow.com/a/2768660/179630

获取了它

答案 1 :(得分:0)

这应该将每个分支中的图像移动到第一级文件夹,但不处理文件名冲突。

在文件副本的文件夹上进行测试。

@echo off
for /d %%a in (*) do (
    pushd "%%a"
        for /r %%b in (*.jpg) do move "%%b" . 
    popd
)
pause
for /L %%a in (1,1,5) do for /d /r %%b in (*) do rd "%%b" 2>nul

最后一行应仅删除最多5个级别的空文件夹(如果存在)。

答案 2 :(得分:-2)

试试这个:

move comics\series 000\series 000 blah\*.jpg comics\series 000