Board logo

标题: [文件操作] 批处理如何将多个文件夹里的文件的名称添加上所在文件夹名中指定位置的字符串? [打印本页]

作者: 228630386    时间: 2016-10-2 15:22     标题: 批处理如何将多个文件夹里的文件的名称添加上所在文件夹名中指定位置的字符串?

批处理如何跟据原始数据匹配,修改文件夹内的图片名称?
1、文件夹序号去掉,序号后面通常是一个或者两个空格
2、分隔出来的条码跟原始数据中的货号匹配
3、文件夹中的图片名称,需要将条码匹配成货号,(常规图片名称有:1,2,3,4,5,6,7,15,16,17,18,19,20.jpg,其它命名的图片不需要修改)
4、将原来文件图片名称,改成相应货号+图片名
5、实际情况会有很多文件夹及图片,不知是否能简化一下流程,图片文件夹过大,上传不了。

匹配数据会有以下两列内容:
条码                              货号
KK000101150006        KK0001011500
KK000101150006        KK0001011500
KK400605040006        KK4006050400
KK404108030006        KK4041080300
KK601202040006        KK6012020400
KK601501040006        KK6015010400
KK080210150036        KK0802101500
KK480504121200        KK4805041212
KK680103160000        KK6801031600

修改前:
    文件夹名                   文件夹中的图片名
1  KK000101150006           1,2,3,4,5,6,7,15,16,17,18,19,20.jpg

修改后:
    文件夹名                   文件夹中的图片名(根据匹配数据中条码,提取相应该的货号,加在图片名称前面)
1  KK000101150006           KK0001011500-1,KK0001011500-2,KK0001011500-3,KK0001011500-4,KK0001011500-5等等。。。。。。
作者: aa77dd@163.com    时间: 2016-10-2 20:13

你可以加酬金
作者: pcl_test    时间: 2016-10-2 21:45

本帖最后由 pcl_test 于 2016-10-3 13:01 编辑
  1. rem 特么居然没有明确说明如何从文件夹名中截取出货号,又要猜。win7以上系统运行
  2. powershell -c "dir -filter *.jpg -r|?{!$_.PSIsContainer}|ren -n {($_.Directory -replace '^\S+\s+([^-]+)[^-][^-](-.+)?','$1$2')+'-'+$_.Name}"
  3. pause
复制代码
dir -filter *.jpg -r改为dir -include [1-7].jpg,1[5-9].jpg,20.jpg -r
作者: 228630386    时间: 2016-10-3 09:27

本帖最后由 228630386 于 2016-10-17 15:11 编辑

回复 3# pcl_test

不好意思,这里没有讲解清楚,条码和货号的关系是在原始数据中提取,这个test的比较有规率,有些是没有规率,不知能否通过原始数据来匹配图片名。
文件夹中也可能存在多张图片,能否只需要修改1,2,3,4,5,6,7,15,16,17,18,19,20命名的图片。
作者: pcl_test    时间: 2016-10-3 12:03

回复 4# 228630386
嗯,仍未说明提取规则是什么
作者: 228630386    时间: 2016-10-4 11:19

回复 5# pcl_test


    我已经想了好久怎样去表达,但还是没有表达清楚,只能用图片说明一下,在表格中有一个原始数据,条码和货号是对应关系的。
作者: 228630386    时间: 2016-10-9 12:54

本帖最后由 228630386 于 2016-10-17 16:02 编辑

不知是否有方法可以快速解决这个匹配问题呢?现在找到最土的方法去更改,但几个地方都还需要优化。

1. 批量删除序号(需要优化:如出现文件夹中还有子文件夹就操作不了,现在必须要拷在同一个文件夹中才行。)
  1. for /f "delims=" %%a in ('dir /ad/b') do (
  2.     for /f "tokens=2" %%b in ("%%a") do ren "%%a" "%%b"
  3. )
  4. pause
复制代码
2. 批量匹配命名(需要优化:假如文件夹名称与TXT匹配不了,不知可否生成结果。)
  1. @echo off
  2. for /f "tokens=1*" %%i in (匹配数据.txt) do ren "%%i" "%%j%%~xi"
  3. pause
复制代码
3. 批量图片改名(需要优化:能否只针对1-7,19-20的图片改名,并复制到image文件夹中。)
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /ad ^| findstr /i /v "image"') do (
  3.     for /f "delims=" %%j in ('dir /b /a-d %%i\*.jpg') do (
  4.         ren "%%i\%%j" "%%i-%%~nj%%~xj"
  5.         xcopy /y "%%i\%%i-%%~nj%%~xj" "image"
  6.     )
  7. )
复制代码





欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2