Board logo

标题: [文件操作] 批处理如何将最底层子文件夹下的文件批量移动到上层文件夹? [打印本页]

作者: SandraRusso    时间: 2015-2-11 20:57     标题: 批处理如何将最底层子文件夹下的文件批量移动到上层文件夹?

F盘下W文件夹内有1、2、3……等子文件夹,1、2、3子文件夹下又包含子文件夹,想把最底层子文件夹下的文件批量移动到上层文件夹并删除最底层文件夹,如何实现呢?
作者: pcl_test    时间: 2015-2-11 21:31

回复 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
复制代码

作者: SandraRusso    时间: 2015-2-11 21:37

回复 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
作者: pcl_test    时间: 2015-2-11 21:55

回复 3# SandraRusso
将什么删除?除2-4开头的照片的照片删除?
作者: SandraRusso    时间: 2015-2-11 22:08

回复 4# pcl_test


    就是把除2-4开头的照片留在当前目录里,其他的序号的照片都归类到型号文件夹中去,最后再将这些型号文件夹批量删除!
作者: SandraRusso    时间: 2015-2-11 22:11

回复 4# pcl_test


    刚才多打了一个”除“字,不熬意思啊!就是把2-4开头的照片留在当前目录里,其他的序号的照片都归类到型号文件夹中去,最后再将这些型号文件夹批量删除!
作者: pcl_test    时间: 2015-2-11 22:43

回复 6# SandraRusso

那直接把除2-4开头的照片删除不就可以了吗?
作者: SandraRusso    时间: 2015-2-11 22:47

回复 4# pcl_test


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

回复 7# pcl_test


    对!是这意思!我好像转迷糊了 呵呵~
作者: pcl_test    时间: 2015-2-11 23:41

回复 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
复制代码

作者: pcl_test    时间: 2015-2-11 23:48

回复 8# SandraRusso

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

回复 11# pcl_test


   这样运行后依然会显示为'dir /ad /b "F:\W"'不是内部或外部命令,也不是可运行的程序或批处理文件!我怀疑应该是系统变量的问题,您在费心帮我看下吧!
作者: pcl_test    时间: 2015-2-14 15:13

本帖最后由 pcl_test 于 2015-2-14 21:18 编辑

回复 12# SandraRusso

在命令提示符输入dir /?,回车后出错吗?
作者: SandraRusso    时间: 2015-2-15 10:22

回复 13# pcl_test


    刚刚试了一下,命令行输入dir /ad /b "F:\W"可以正常运行,但是整体代码就无法运行了!运行错误提示
作者: SandraRusso    时间: 2015-2-15 14:41

回复 13# pcl_test


    您看我另一个桌面的存放路径并无修改桌面位置的选项卡
作者: SandraRusso    时间: 2015-2-16 10:03

回复 13# pcl_test


    看到我给您截的图没?您有空帮我看看哈!多谢~
作者: wpy4206    时间: 2018-8-4 11:37

回复 2# pcl_test
麻烦请教一下,这个帖子,移动底层文件至上一层文件夹中的同时,想用底层文件夹名称重命名文件加个序号1、2、3...就行,最多到100
作者: 光d头    时间: 2018-12-26 16:43

回复 2# pcl_test


    你好,我看到了这个代码,使用的时候会丢失一部分文件,请问是为什么,备注:只会用的小白。非常希望得到帮助




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