windows目录层级批量修改
D:\test\01\images\2020\10\123.txtD:\test\01\images\2021\10\123.txt
D:\test\01\images\2022\10\123.txt
D:\test\01\images\2023\10\123.txt
D:\test\01\images\2024\10\123.txt
D:\test\01\10\123.txt
D:\test\01\10\123.txt
D:\test\01\10\123.txt
D:\test\01\10\123.txt
D:\test\01\10\123.txt
用什么工具可以批量的把上边的目录结构修改为下边的目录结构呢?就是删除中间的某些目录层级。 wangxiaohe 发表于 2024-10-30 09:02
批处理提示目录不为空
用这个应该没问题了
@echo off
chcp 65001 > nul
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=|" %%s in (directories.txt) do (
set "source_dir=%%s"
set "target_dir=%%t"
if not exist "!target_dir!" (
mkdir "!target_dir!"
)
robocopy "!source_dir!" "!target_dir!" /E /MOVE
rem 检查父目录是否为空
for %%i in ("!source_dir!") do (
set "parent_dir=%%~dpi"
if exist "!parent_dir!" (
pushd "!parent_dir!" > nul
set "is_empty_parent=1"
rem 检查父目录是否有文件或子目录
for /f %%f in ('dir /a /b') do (
set "is_empty_parent=0"
echo 父目录不为空: %%f
rem 检查是否有隐藏文件
if "%%~af"=="d" (
echo 发现父目录中的子目录: %%f
) else (
if "%%~af"=="h" (
echo 发现父目录中的隐藏文件: %%f
)
)
)
popd > nul
if "!is_empty_parent!"=="1" (
rd /s /q "!parent_dir!" 2>nul
echo 父目录已强制删除: "!parent_dir!"
) else (
echo 父目录不为空,无法删除: "!parent_dir!"
)
)
)
)
echo 移动完成。
pause
everything.exe软件。先手动创建一个D:\test\01\10文件夹。然后利用everything.exe筛选D:\test\01\images\文件夹下的所有txt文件。然后全选,人工拷贝到D:\test\01\10文件夹下 本帖最后由 Cristy 于 2024-10-24 17:50 编辑
# 用bat
```PowerShell
@echo off
setlocal
rem 源目录
set "source_dir=D:\test\01\images\2020\10"
rem 目标目录
set "target_dir=D:\test\01\10"
if not exist "!target_dir!" (
mkdir "!target_dir!"
)
rem 移动子目录和文件
move "!source_dir!\*" "!target_dir!\"
rem 删除源目录
rd /s /q "E:\work\Kdgc"
echo 移动完成。
pause
``` 更改目录结构后是否存在相同文件名的文件,如果存在又该如何处理,直接覆盖? bubuding 发表于 2024-10-24 10:44
everything.exe软件。先手动创建一个D:\test\01\10文件夹。然后利用everything.exe筛选D:\test\01\images\ ...
这跟我直接去目录里剪切有什么区别?剪切后复制到上上层目录,100个目录,我剪切100次。 Cristy 发表于 2024-10-24 10:49
# 用bat
```PowerShell
这个一次只能修改一个目录吧,我有100个类似结构的目录呢? wangxiaohe 发表于 2024-10-29 09:08
这个一次只能修改一个目录吧,我有100个类似结构的目录呢?
创建一个txt directories.txt 必须这个名字
文本里面写 源目录|目标目录 用竖线隔开
https://www.helloimg.com/i/2024/10/29/67203c01dddaf.png
它会把左边目录下的所有的东西移动到右边 并删除左边目录
创建一个 bat把bat和txt放在一起
@echo offchcp 65001 > nul
setlocal enabledelayedexpansion
rem 读取目录列表并处理每个目录
for /f "tokens=1,2 delims=|" %%s in (directories.txt) do (
set "source_dir=%%s"
set "target_dir=%%t"
rem 创建目标目录(如果不存在)
if not exist "!target_dir!" (
mkdir "!target_dir!"
)
rem 移动子目录和文件
move "!source_dir!\*" "!target_dir!\"
rem 删除源目录
rd /s /q "!source_dir!"
)
echo 移动完成。
pause
Cristy 发表于 2024-10-29 02:38
创建一个txt directories.txt 必须这个名字
文本里面写 源目录|目标目录 用竖线隔开
https://s3.bmp.ovh/imgs/2024/10/29/5f7b95981b4a8fc1.jpg
报错了 wangxiaohe 发表于 2024-10-29 14:51
报错了
https://www.123865.com/s/XxfSVv-k8F4?提取码:CCYt
下载我的这个改directories.txt 试试
直接双击bat