标题: [文件操作] 【已解决】求助bat批量创建文件夹并将同名文件移入的相关问题 [打印本页]
作者: 1989615wx 时间: 2022-5-14 00:58 标题: 【已解决】求助bat批量创建文件夹并将同名文件移入的相关问题
本帖最后由 1989615wx 于 2022-5-14 17:45 编辑
现有多个同名的文件,想自动创建同名的文件夹,并且把相同名字的文件移入同名文件夹内,并在末尾标记文件夹内文件的数量
原始文件:
汽车销售合约书 4k 骆 便签和联单共版印.pdf[asx].1A.K.TIF
汽车销售合约书 4k 骆 便签和联单共版印.pdf[asx].2A.K.TIF
汽车销售合约书 4k 骆 便签和联单共版印.pdf[asx].3A.K.TIF
生鲜采购计划表 大4K 娇.pdf[asy].1A.K.TIF
生鲜采购计划表 大4K 娇.pdf[asy].2A.K.TIF
欧航顶业+莘辰机械 4K 娇.pdf[ata].1A.K.TIF
欧航顶业+莘辰机械 4K 娇.pdf[ata].2A.K.TIF
想要达到的效果:
汽车销售合约书 4k 骆 便签和联单共版印---3
生鲜采购计划表 大4K 娇---2
欧航顶业+莘辰机械 4K 娇---2
这些文件名里面有多个空格,识别空格就不太准确。
作者: qixiaobin0715 时间: 2022-5-14 09:25
- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1*" %%a in ('dir /b /a-d *.pdf') do (
- if defined str (
- if not defined _%%a (
- for %%i in (_!str!) do (
- md "!str!!%%i!"
- move "!str! *.pdf" "!str!---!%%i!\"
- )
- )
- )
- set str=%%a
- set /a _!str!+=1
- )
- for %%i in (_!str!) do (
- md "!str!!%%i!"
- move "!str! *.pdf" "!str!---!%%i!\"
- )
- pause
复制代码
作者: Batcher 时间: 2022-5-14 09:46
回复 1# 1989615wx
请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
test_1.bat- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- for /f "tokens=1*" %%i in ('dir /b /a-d *.pdf') do (
- set /a _%%i+=1
- )
- for /f "tokens=1-2 delims==" %%i in ('set _') do (
- set "FolderLeft=%%i"
- set "FolderRight=%%j"
- set "FolderLeft=!FolderLeft:~1!"
- if not exist "!FolderLeft!---!FolderRight!" (
- md "!FolderLeft!---!FolderRight!"
- )
- move /y "!FolderLeft! *.pdf" "!FolderLeft!---!FolderRight!"
- )
- endlocal
复制代码
作者: Batcher 时间: 2022-5-14 09:52
回复 1# 1989615wx
请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
test_2.bat- @echo off
- cd /d "%~dp0"
- for /f "tokens=1*" %%i in ('dir /b /a-d *.pdf') do (
- if not exist "%%i" (
- md "%%i"
- )
- move /y "%%i %%j" "%%i"
- )
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /ad') do (
- set "n=0"
- for /f "delims=" %%i in ('dir /b /a-d "%%i"') do (
- set /a n+=1
- )
- ren "%%i" "%%i---!n!"
- )
复制代码
作者: qixiaobin0715 时间: 2022-5-14 10:19
本帖最后由 qixiaobin0715 于 2022-5-14 10:20 编辑
前N个字符是一个模糊概念,除非指定N的值才可以,举一个极端的例子,比如文件名为:
1abcd.pdf
12abc.pdf
123ab.pdf
1234a.pdf
第1个字符都相同;
前2个字符相同的有3个;
前3个字符相同的有2个;
如何取舍呢?
作者: hlzj88 时间: 2022-5-14 11:53
- @echo off&&setlocal enabledelayedexpansion
- for /f "tokens=1 delims= " %%i in ('dir /b/on "*.pdf"') do (
- for /f "tokens=1 delims= " %%j in ('dir /b/on "%%i*.pdf"') do md %%i>nul 2>nul&&set p=1|| set /a p+=1
- rd /q %%i>nul
- md %%i---!p!>nul 2>nul
- move /y "%%i*.pdf" "%%i---!p!\"
- )
- cls
- pause
复制代码
作者: 1989615wx 时间: 2022-5-14 14:04
回复 2# qixiaobin0715
谢谢,这个代码可以创建同名文件夹和标记文件数量,但是没有把文件移入到同名文件夹内,不知道哪里出了问题
作者: 1989615wx 时间: 2022-5-14 14:08
回复 5# qixiaobin0715
嗯,这个我可以保证让文件名内空格之前文字都是相同的
作者: 1989615wx 时间: 2022-5-14 14:24
回复 4# Batcher
谢谢大佬,能否改一下,把识别空格改成识别[这个符号
作者: Batcher 时间: 2022-5-14 14:35
回复 9# 1989615wx
请给出具体的文件名
作者: 1989615wx 时间: 2022-5-14 14:42
回复 10# Batcher
原始文件:
汽车销售合约书 4k 骆 便签和联单共版印.pdf[asx].1A.K.TIF
汽车销售合约书 4k 骆 便签和联单共版印.pdf[asx].2A.K.TIF
汽车销售合约书 4k 骆 便签和联单共版印.pdf[asx].3A.K.TIF
生鲜采购计划表 大4K 娇.pdf[asy].1A.K.TIF
生鲜采购计划表 大4K 娇.pdf[asy].2A.K.TIF
欧航顶业+莘辰机械 4K 娇.pdf[ata].1A.K.TIF
欧航顶业+莘辰机械 4K 娇.pdf[ata].2A.K.TIF
想要达到的效果:
汽车销售合约书 4k 骆 便签和联单共版印---3
生鲜采购计划表 大4K 娇---2
欧航顶业+莘辰机械 4K 娇---2
这些文件名里面有多个空格,识别空格就不太准确。
作者: Batcher 时间: 2022-5-14 17:37
回复 11# 1989615wx - @echo off
- cd /d "%~dp0"
- for /f "tokens=1* delims=[" %%i in ('dir /b /a-d *.tif') do (
- if not exist "%%~ni" (
- md "%%~ni"
- )
- move /y "%%i[%%j" "%%~ni"
- )
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /ad') do (
- set "n=0"
- for /f "delims=" %%i in ('dir /b /a-d "%%i"') do (
- set /a n+=1
- )
- ren "%%i" "%%i---!n!"
- )
复制代码
作者: hlzj88 时间: 2022-5-14 18:15
- @echo off&&setlocal enabledelayedexpansion
- for /f "tokens=1 delims=." %%i in ('dir /b /a-d "*.tif"') do (
- set p=0
- for /f "delims=" %%j in ('dir /b /a-d "%%i*.*"') do echo %%j>nul 2>nul&&set /a p+=1||set p=0
- md "%%i---!p!"
- move /y "%%i*.*" "%%i---!p!\"
- rd /q "%%i---0">nul
- )
- cls
- pause
复制代码
作者: qixiaobin0715 时间: 2022-5-15 09:41
回复 1# 1989615wx
举例时用真实场景或数据而不是自己来杜撰,并且改来改去的,能够减少浪费别人的时间和精力。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |