标题: [文件操作] [已解决]批处理如何删除一层文件夹把里面的pdf文件剪切出来放到上一层? [打印本页]
作者: liaoguinan 时间: 2023-9-19 20:38 标题: [已解决]批处理如何删除一层文件夹把里面的pdf文件剪切出来放到上一层?
本帖最后由 liaoguinan 于 2023-9-20 16:37 编辑
如何删除一层文件夹把里面的pdf文件剪切出来放到上一层?
E:\测试\001\001-1\1.pdf
E:\测试\001\001-2\2.pdf
E:\测试\001\001-3\5.jpg
E:\测试\002\002-1\1.pdf
E:\测试\002\002-2\2.pdf
E:\测试\002\002-3\5.jpg
结果
E:\测试\001\1.pdf
E:\测试\001\2.pdf
E:\测试\001\001-3\5.jpg
E:\测试\002\1.pdf
E:\测试\002\2.pdf
E:\测试\002\002-3\5.jpg
如图的路径在测试文件夹下遍历判断如果是pdf文件则把上一级文件夹删除,把文件剪切到上一级
作者: pd1 时间: 2023-9-19 21:56
本帖最后由 pd1 于 2023-9-19 21:58 编辑
- @echo off
- set "path=E:\测试\"
- for /f "delims=" %%a in ('dir /b/s /a-d %path%*.pdf') do call :m %%a
- for /f "delims=" %%a in ('dir /b/s /ad %path%') do rd %%a 2>nul
- pause&exit
- :m
- pushd %~dp1
- cd..
- move %1 %cd%
- popd
复制代码
作者: 77七 时间: 2023-9-20 01:00
- @echo off
- rem 批处理保存为ansi编码格式
- cd /d "e:\测试" || exit
- (for /d %%d in (*) do (
- for /d %%e in ("%%d\*") do (
- move /-y "%%e\*.pdf" "%%d"
- if errorlevel 0 (
- rd "%%e"
- )
- )
- )) 2>nul
- pause
复制代码
作者: Five66 时间: 2023-9-20 02:07
不知行否,放到 e:\测试 文件夹里运行- @echo off
- for /d %%a in (*) do (
- for /f "delims=" %%b in ('dir /s /b "%%~fa\*.pdf"') do (
- if "%%~dpb" neq "%%~fa\" (
- if not exist "%%~fa\%%~nxb" (
- move "%%b" "%%~fa\"
- ) else (
- move "%%b" "%%~fa\%%~nb___%%~nxb"
- )
- )
- rd "%%~dpb" 2>nul
- ))
复制代码
作者: liaoguinan 时间: 2023-9-20 06:48
回复 4# Five66
可以运行,但是有个问题是否能解决呢?就是文件名超出系统限定长度的pdf文件好像是不执行操作的
作者: liaoguinan 时间: 2023-9-20 06:48
回复 3# 77七
可以运行,但是有个问题是否能解决呢?就是文件名超出系统限定长度的pdf文件好像是不执行操作的
作者: 77七 时间: 2023-9-20 07:14
回复 6# liaoguinan
文件名有多长?
作者: terse 时间: 2023-9-20 08:10
这样的怎么处理
E:\测试\001\001-3\5.jpg
E:\测试\001\001-3\5.pdf
E:\测试\002\002-1\1.jpg
E:\测试\002\002-1\1.pdf
作者: qixiaobin0715 时间: 2023-9-20 08:31
本帖最后由 qixiaobin0715 于 2023-9-23 09:29 编辑
你可以举一个”文件名超出系统限定长度的pdf文件“例子,让大家看看。- @echo off
- for /f "delims=" %%i in ('dir /s /b /a-d *.pdf') do (
- move "%%i" "%%~dpi..">nul 2>nul
- if not exist "%%~dpi.\*.pdf" rd "%%~dpi" 2>nul
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |