[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理将当前目录及其所有子目录中的文件移动到各自的子目录中

将当前目录及其所有子目录中的文件移动到各自的子目录中
文件是放在二级目录里面,里面只有一个文件夹,需要把里面的文件都移动到这个文件夹里面
看哪位大佬指点一二 :handshake :handshake

目前我只有这个代码,只是当前目录的,需要二级目录的
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 查找当前目录下的第一个文件夹
  4. for /d %%D in (*) do (
  5.     set "firstFolder=%%D"
  6.     goto :FoundFirstFolder
  7. )
  8. :FoundFirstFolder
  9. REM 检查是否找到了文件夹
  10. if not defined firstFolder (
  11.     echo 没有找到任何文件夹,无法移动文件。
  12.     pause
  13.     exit /b
  14. )
  15. REM 移动当前目录下的所有文件(不包括子目录)到第一个找到的文件夹
  16. for %%F in (*) do (
  17.     if not "%%~dF"=="%CD%" move "%%F" "%firstFolder%\" >nul
  18. )
  19. echo 文件移动完成。
  20. pause
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

一个大的文件夹,表面有许多文件夹,这些文件夹内有文件
然后移入这多个文件夹的,最底层的那个文件夹
ps-(这个大文件可以保证是没有文件的,只有里面的文件夹有文件)

TOP

怕说的不够清楚,麻烦看下
一个大的文件夹,表面有许多文件夹,这些文件夹内有文件
然后移入这多个文件夹的,最底层的那个文件夹
ps-(这个大文件可以保证是没有文件的,只有里面的文件夹有文件)

TOP

回复 1# zhengzhenhui


请给一个真实的例子说明一下你的需求吧,比如操作之前是怎样的,操作之后变成啥样?
如果需要上传文件,请用使用网盘。

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 zhengzhenhui 于 2024-4-27 13:55 编辑

图床

TOP

用ai写的但是用不了
将当前目录及其所有子目录中的文件移动到各自的子目录中:
[
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 获取当前目录
  4. cd /d %~dp0
  5. REM 遍历当前目录下的所有子目录
  6. for %%d in (*) do (
  7.     REM 如果子目录存在,则进入该子目录
  8.     if exist "%%d" (
  9.         cd "%%d"
  10.         REM 在当前子目录下遍历所有文件
  11.         for %%f in (*) do (
  12.             REM 检查文件所在的位置是否为当前子目录
  13.             if not "%%~dpf"=="%CD%\" (
  14.                 REM 如果文件不在当前子目录下,则将其移动到当前子目录中
  15.                 move "%%f" "."
  16.             )
  17.         )
  18.         REM 返回上级目录
  19.         cd ..
  20.     )
  21. )
  22. echo 所有文件已移动完成。
  23. pause
复制代码

TOP

  1. @echo off
  2. cd /d "%~dp0"
  3. for /d %%d in (*) do (
  4. for /d %%e in ("%%d\*") do (
  5. move "%%d\*" "%%e\"
  6. )
  7. )
  8. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 7# 77七


    太感谢你了,如果是移动最底层的文件夹,该如何写

TOP

本帖最后由 qixiaobin0715 于 2024-4-27 10:44 编辑

如果二级目录及其下面的所有子孙文件夹中都只有一个文件夹,像这种结构:
  1. .
  2. │  
  3. ├─5
  4. │  │  6_456.txt
  5. │  │  
  6. │  └─lk
  7. │      └─321
  8. │          └─abc
  9. ├─6
  10. │  │  5_123.txt
  11. │  │  
  12. │  └─lk
  13. │      └─lkkj
  14. └─7
  15.     │  7_789.txt
  16.     │  
  17.     └─kj
复制代码
看看这样能否实现:
  1. @echo off
  2. for /d %%i in (*) do (
  3.     pushd "%%i"
  4.     for /f "delims=" %%j in ('dir /s /b /ad^|sort /r') do (
  5.         move "*.*" "%%j\">nul 2>nul
  6.     )
  7.     popd
  8. )
  9. pause
复制代码

TOP

回复 5# zhengzhenhui


    再仔细看看4楼帖子,你复制的链接不对
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8# zhengzhenhui


  
移动最底层的文件夹
移动这个文件夹到哪?
bat小白,请多指教!谢谢!

TOP

回复 11# 77七


    将当前目录下每个子目录中的文件移动到该最底层的子目录下

TOP

回复 10# Batcher


    已纠正

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%d in ('dir /b /ad') do (
  3.      for /f "delims=" %%D in ('dir /b /s /ad "%%d"') do set d=%%D
  4.      move "%%d\*.*"  "!d!" >nul 2>nul
  5. )
  6. pause
复制代码

TOP

回复 14# terse


    这段代码刚刚试过了,文件只能处于二级子目录里面,才能移动到最底层。
如果保护底下目录的所有文件,都往底层文件夹放,改如何写

TOP

返回列表