找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29237|回复: 8

[文件操作] 批处理怎样从多级目录下把文件移动到新创建的文件夹?

[复制链接]
发表于 2014-12-19 23:03:17 | 显示全部楼层 |阅读模式
问题描述:现在有许多两级目录,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   如何写代码?谢谢。
发表于 2014-12-20 14:49:19 | 显示全部楼层
本帖最后由 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. )
复制代码
 楼主| 发表于 2014-12-20 16:35:51 | 显示全部楼层
回复 2# apang 特别感谢你的回答,可以解决问题,我想加一句判断,如果存在文件夹  表格图片  就和不用建立文件夹和移动图片了,应该怎么写?我试了下,老是不运行写的那段代码。
发表于 2014-12-20 17:52:31 | 显示全部楼层
回复 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. )
复制代码
 楼主| 发表于 2014-12-20 19:32:30 | 显示全部楼层
回复 4# DAIC 谢谢你的回答,我运行了下,还是会新建一个文件夹,并把图片移动到里面,每运行一次就会把目录加深一级。
发表于 2014-12-20 21:00:06 | 显示全部楼层
这样试:
  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
复制代码
 楼主| 发表于 2014-12-20 21:22:21 | 显示全部楼层
这回可以了,太厉害了。谢谢你们
 楼主| 发表于 2014-12-20 22:00:54 | 显示全部楼层
回复 6# apang 请apang解释下你写的代码的意思好不?我刚学习没有多久,你写的有些我还是看的不是太懂,谢谢。如下:for %%b in ("%%~dpa.") do (
            echo %%~nxb   
           if "%%~nxb" NEQ
    这段中的几次扩展,别的地方没有看到过,麻烦解释下,我们好学习下
发表于 2014-12-21 16:56:22 | 显示全部楼层
回复 8# kmustwxw


看看教程:
http://bbs.bathome.net/thread-31727-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 01:19 , Processed in 0.018560 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表