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

[文件操作] 批处理如何将最底层子文件夹下的文件批量移动到上层文件夹?

[复制链接]
发表于 2015-2-11 20:57:51 | 显示全部楼层 |阅读模式
F盘下W文件夹内有1、2、3……等子文件夹,1、2、3子文件夹下又包含子文件夹,想把最底层子文件夹下的文件批量移动到上层文件夹并删除最底层文件夹,如何实现呢?
发表于 2015-2-11 21:31:11 | 显示全部楼层
回复 1# SandraRusso

测试前先备份原文件夹
  1. @echo off
  2. cd /d "F:\W"
  3. for /f %%a in ('dir /ad /b') do (
  4. pushd "%%a"
  5. for /f %%b in ('dir /ad /b') do (
  6. pushd "%%b"
  7. for /f %%i in ('dir /a-d /b') do (
  8. move "%%i" "./.."
  9. )
  10. popd
  11. rd "%%b" /s /q 2>nul
  12. echo 已删除“%%b”文件夹
  13. )
  14. popd
  15. )
  16. pause
复制代码
 楼主| 发表于 2015-2-11 21:37:34 | 显示全部楼层
回复 2# pcl_test


   谢谢啦! 终于联系上你了,昨天的那个代码可以在帮我完善下么?如果我想把除2-4开头的照片放在型号文件夹里面然后再将其删除要怎么写呢?
@echo off
set "filesdir=G:\H\"
for /f %%i in ('dir /ad /b "%filesdir%"') do (
pushd "%filesdir%%%i"
md "厂家\" "型号\"
for /l %%a in (1,1,5) do (
move %%a-*.* "厂家\"
move %%a.* "厂家\"
)
move *.* "型号\"
popd
)
pause
发表于 2015-2-11 21:55:57 | 显示全部楼层
回复 3# SandraRusso
将什么删除?除2-4开头的照片的照片删除?
 楼主| 发表于 2015-2-11 22:08:19 | 显示全部楼层
回复 4# pcl_test


    就是把除2-4开头的照片留在当前目录里,其他的序号的照片都归类到型号文件夹中去,最后再将这些型号文件夹批量删除!
 楼主| 发表于 2015-2-11 22:11:08 | 显示全部楼层
回复 4# pcl_test


    刚才多打了一个”除“字,不熬意思啊!就是把2-4开头的照片留在当前目录里,其他的序号的照片都归类到型号文件夹中去,最后再将这些型号文件夹批量删除!
发表于 2015-2-11 22:43:55 | 显示全部楼层
回复 6# SandraRusso

那直接把除2-4开头的照片删除不就可以了吗?
 楼主| 发表于 2015-2-11 22:47:17 | 显示全部楼层
回复 4# pcl_test


    另外还有一个我特别头疼的事情想让您帮我解决下,就是您昨天给我的这个代码在我家的电脑就能完美运行,
但是在公司的电脑上运行就会莫名其妙的报错(报错内容为'dir /ad /b "F:\W"'不是内部或外部命令,也不是可运行的程序或批处理文件)
是不是我的系统变量有问题,因为我偶尔保存到桌面的文件有时会找不到,后来查了以后发现是在这个路径下才能找到
由于公司电脑装了两个系统(双系统),一个XP,一个W7,一般我是进W7系统的 ,所以我怀疑是公司的电脑的系统变量是不是有问题导致无法定位到具体指定盘符下呢?
没关系,您先休息吧!等您有空一定帮我解决下呀!感谢啦~
 楼主| 发表于 2015-2-11 22:49:00 | 显示全部楼层
回复 7# pcl_test


    对!是这意思!我好像转迷糊了 呵呵~
发表于 2015-2-11 23:41:40 | 显示全部楼层
回复 9# SandraRusso

测试前先备份原文件
  1. @echo off
  2. set "filesdir=F:\W"
  3. for /f %%i in ('dir /ad /b "%filesdir%"') do (
  4. pushd "%filesdir%%%i"
  5. for /l %%a in (2 1 4) do (
  6. xcopy "%%a-*.*" "temp"
  7. xcopy "%%a.*" "temp"
  8. )
  9. del *.* /f /q
  10. pushd "temp"
  11. copy *.* "./.."
  12. popd
  13. rd "temp" /s /q
  14. popd
  15. )
  16. pause
复制代码
发表于 2015-2-11 23:48:43 | 显示全部楼层
回复 8# SandraRusso

1、桌面的路径你可以修改
2、你可以在命名提示符输入dir /ad /b "F:\W" ,按回车看看有什么提示,如果能正常运行就不是环境变量的问题
或者可以把你批处理代码中的第一行@echo off去掉再运行批处理看看出错的位置在哪,最好截图

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 不潜水的都是好同志

查看全部评分

 楼主| 发表于 2015-2-14 12:01:27 | 显示全部楼层
回复 11# pcl_test


   这样运行后依然会显示为'dir /ad /b "F:\W"'不是内部或外部命令,也不是可运行的程序或批处理文件!我怀疑应该是系统变量的问题,您在费心帮我看下吧!
发表于 2015-2-14 15:13:13 | 显示全部楼层
本帖最后由 pcl_test 于 2015-2-14 21:18 编辑

回复 12# SandraRusso

在命令提示符输入dir /?,回车后出错吗?
 楼主| 发表于 2015-2-15 10:22:44 | 显示全部楼层
回复 13# pcl_test


    刚刚试了一下,命令行输入dir /ad /b "F:\W"可以正常运行,但是整体代码就无法运行了!运行错误提示
 楼主| 发表于 2015-2-15 14:41:51 | 显示全部楼层
回复 13# pcl_test


    您看我另一个桌面的存放路径并无修改桌面位置的选项卡
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 22:46 , Processed in 0.021429 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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