Board logo

标题: [文件操作] 批处理怎样从多级目录下把文件移动到新创建的文件夹? [打印本页]

作者: kmustwxw    时间: 2014-12-19 23:03     标题: 批处理怎样从多级目录下把文件移动到新创建的文件夹?

问题描述:现在有许多两级目录,XYZ文件夹里有A、B、C、……几个文件夹,A文件夹里有A001、A002、A003、A004、……B文件夹里有B001、B002、B003、B004……、C文件夹里有C001、C002、C003、C004、……等等,A001、A002、A003、A004、……B001、B002、B003、B004……C001、C002、C003、C004、……这个级别的文件夹里都有一个名为:地籍调查表.jpg 的文件,现在要创建一个文件夹,名字为:表格图片   的文件夹,并要把这个  地籍调查表.jpg  文件移动到创建的文件夹里面。举个例子:图片所的在目录就为:XYZ\A\A001\表格图片\地籍调查表.jpg   如何写代码?谢谢。
作者: apang    时间: 2014-12-20 14:49

本帖最后由 apang 于 2014-12-20 14:59 编辑
  1. @echo off
  2. pushd "D:\XYZ\"
  3. for /f "delims=" %%a in ('dir /b /s 地籍调查表.jpg?') do (
  4.         md "%%~dpa表格图片" 2>nul
  5.         move "%%a" "%%~dpa表格图片\"
  6. )
复制代码

作者: kmustwxw    时间: 2014-12-20 16:35

回复 2# apang 特别感谢你的回答,可以解决问题,我想加一句判断,如果存在文件夹  表格图片  就和不用建立文件夹和移动图片了,应该怎么写?我试了下,老是不运行写的那段代码。
作者: DAIC    时间: 2014-12-20 17:52

回复 3# kmustwxw
  1. @echo off
  2. pushd "D:\XYZ\"
  3. for /f "delims=" %%a in ('dir /b /s 地籍调查表.jpg?') do (
  4.     if not exist "%%~dpa表格图片\"(
  5.         md "%%~dpa表格图片"
  6.         move "%%a" "%%~dpa表格图片\"
  7.     )
  8. )
复制代码

作者: kmustwxw    时间: 2014-12-20 19:32

回复 4# DAIC 谢谢你的回答,我运行了下,还是会新建一个文件夹,并把图片移动到里面,每运行一次就会把目录加深一级。
作者: apang    时间: 2014-12-20 21:00

这样试:
  1. @echo off
  2. set "srcDir=D:\XYZ"
  3. set "re=%srcDir:\=\\%\\[^\\]*\\[^\\]*$"
  4. pushd "%srcDir%\"
  5. for /f "delims=" %%a in ('dir /ad/b/s^|findstr /irc:"%re%"') do (
  6.         md "%%a\表格图片"
  7.         move "%%a\地籍调查表.jpg" "%%a\表格图片"
  8. ) 2>nul
  9. pause
复制代码
  1. @echo off
  2. pushd "D:\XYZ\"
  3. for /f "delims=" %%a in ('dir /b /s 地籍调查表.jpg?') do (
  4.         for %%b in ("%%~dpa.") do (
  5.                 if "%%~nxb" NEQ "表格图片" (
  6.                         md "%%~dpa表格图片"
  7.                         move "%%a" "%%~dpa表格图片\"
  8.                 )
  9.         )
  10. ) 2>nul
  11. pause
复制代码

作者: kmustwxw    时间: 2014-12-20 21:22

这回可以了,太厉害了。谢谢你们
作者: kmustwxw    时间: 2014-12-20 22:00

回复 6# apang 请apang解释下你写的代码的意思好不?我刚学习没有多久,你写的有些我还是看的不是太懂,谢谢。如下:for %%b in ("%%~dpa.") do (
            echo %%~nxb   
           if "%%~nxb" NEQ
    这段中的几次扩展,别的地方没有看到过,麻烦解释下,我们好学习下
作者: DAIC    时间: 2014-12-21 16:56

回复 8# kmustwxw


看看教程:
http://bbs.bathome.net/thread-31727-1-1.html




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2