标题: [文件操作] [已解决]批处理将当前目录及其所有子目录中的文件移动到各自的子目录中 [打印本页]
作者: zhengzhenhui 时间: 2024-4-26 20:36 标题: [已解决]批处理将当前目录及其所有子目录中的文件移动到各自的子目录中
将当前目录及其所有子目录中的文件移动到各自的子目录中
文件是放在二级目录里面,里面只有一个文件夹,需要把里面的文件都移动到这个文件夹里面
看哪位大佬指点一二 :handshake :handshake
目前我只有这个代码,只是当前目录的,需要二级目录的- @echo off
- setlocal enabledelayedexpansion
-
- REM 查找当前目录下的第一个文件夹
- for /d %%D in (*) do (
- set "firstFolder=%%D"
- goto :FoundFirstFolder
- )
-
- :FoundFirstFolder
-
- REM 检查是否找到了文件夹
- if not defined firstFolder (
- echo 没有找到任何文件夹,无法移动文件。
- pause
- exit /b
- )
-
- REM 移动当前目录下的所有文件(不包括子目录)到第一个找到的文件夹
- for %%F in (*) do (
- if not "%%~dF"=="%CD%" move "%%F" "%firstFolder%\" >nul
- )
-
- echo 文件移动完成。
- pause
复制代码
作者: zhengzhenhui 时间: 2024-4-26 21:01
一个大的文件夹,表面有许多文件夹,这些文件夹内有文件
然后移入这多个文件夹的,最底层的那个文件夹
ps-(这个大文件可以保证是没有文件的,只有里面的文件夹有文件)
作者: zhengzhenhui 时间: 2024-4-26 21:02
怕说的不够清楚,麻烦看下
一个大的文件夹,表面有许多文件夹,这些文件夹内有文件
然后移入这多个文件夹的,最底层的那个文件夹
ps-(这个大文件可以保证是没有文件的,只有里面的文件夹有文件)
作者: Batcher 时间: 2024-4-26 21:50
回复 1# zhengzhenhui
请给一个真实的例子说明一下你的需求吧,比如操作之前是怎样的,操作之后变成啥样?
如果需要上传文件,请用使用网盘。
如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: zhengzhenhui 时间: 2024-4-26 22:01
本帖最后由 zhengzhenhui 于 2024-4-27 13:55 编辑
图床
作者: zhengzhenhui 时间: 2024-4-26 23:07
用ai写的但是用不了
将当前目录及其所有子目录中的文件移动到各自的子目录中:
[- @echo off
- setlocal enabledelayedexpansion
-
- REM 获取当前目录
- cd /d %~dp0
-
- REM 遍历当前目录下的所有子目录
- for %%d in (*) do (
- REM 如果子目录存在,则进入该子目录
- if exist "%%d" (
- cd "%%d"
-
- REM 在当前子目录下遍历所有文件
- for %%f in (*) do (
- REM 检查文件所在的位置是否为当前子目录
- if not "%%~dpf"=="%CD%\" (
- REM 如果文件不在当前子目录下,则将其移动到当前子目录中
- move "%%f" "."
- )
- )
-
- REM 返回上级目录
- cd ..
- )
- )
-
- echo 所有文件已移动完成。
- pause
复制代码
作者: 77七 时间: 2024-4-26 23:20
- @echo off
- cd /d "%~dp0"
- for /d %%d in (*) do (
- for /d %%e in ("%%d\*") do (
- move "%%d\*" "%%e\"
- )
- )
- pause
复制代码
作者: zhengzhenhui 时间: 2024-4-27 02:59
回复 7# 77七
太感谢你了,如果是移动最底层的文件夹,该如何写
作者: qixiaobin0715 时间: 2024-4-27 10:42
本帖最后由 qixiaobin0715 于 2024-4-27 10:44 编辑
如果二级目录及其下面的所有子孙文件夹中都只有一个文件夹,像这种结构:- .
- │
- ├─5
- │ │ 6_456.txt
- │ │
- │ └─lk
- │ └─321
- │ └─abc
- ├─6
- │ │ 5_123.txt
- │ │
- │ └─lk
- │ └─lkkj
- └─7
- │ 7_789.txt
- │
- └─kj
复制代码
看看这样能否实现:- @echo off
- for /d %%i in (*) do (
- pushd "%%i"
- for /f "delims=" %%j in ('dir /s /b /ad^|sort /r') do (
- move "*.*" "%%j\">nul 2>nul
- )
- popd
- )
- pause
复制代码
作者: Batcher 时间: 2024-4-27 11:20
回复 5# zhengzhenhui
再仔细看看4楼帖子,你复制的链接不对
作者: 77七 时间: 2024-4-27 12:49
回复 8# zhengzhenhui
移动这个文件夹到哪?
作者: zhengzhenhui 时间: 2024-4-27 13:34
回复 11# 77七
将当前目录下每个子目录中的文件移动到该最底层的子目录下
作者: zhengzhenhui 时间: 2024-4-27 13:56
回复 10# Batcher
已纠正
作者: terse 时间: 2024-4-27 18:15
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%d in ('dir /b /ad') do (
- for /f "delims=" %%D in ('dir /b /s /ad "%%d"') do set d=%%D
- move "%%d\*.*" "!d!" >nul 2>nul
- )
- pause
复制代码
作者: zhengzhenhui 时间: 2024-4-27 18:57
回复 14# terse
这段代码刚刚试过了,文件只能处于二级子目录里面,才能移动到最底层。
如果保护底下目录的所有文件,都往底层文件夹放,改如何写
作者: terse 时间: 2024-4-27 19:34
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%d in ('dir /b /ad') do (
- set "d="
- for /f "delims=" %%D in ('dir /b /s /ad "%%d"^|sort /r') do (
- if not defined d (
- set "d=%%D"
- move "%%d\*.*" "!d!" >nul 2>nul
- )else move "%%D\*.*" "!d!" >nul 2>nul
- )
- )
- pause
复制代码
回复 15# zhengzhenhui
作者: zhengzhenhui 时间: 2024-4-27 19:49
回复 16# terse
谢谢可以用的
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |