Board logo

标题: [文件操作] 批处理如何挑出文件夹里多余的文件? [打印本页]

作者: boyuboyu    时间: 2011-4-25 19:58     标题: 批处理如何挑出文件夹里多余的文件?

本帖最后由 boyuboyu 于 2011-4-26 00:18 编辑

我有一个文件夹E:\TDDOWNLOAD\075,里面放的是很多个相片,相片都以“身份证号码+姓名”命名,另外有一个文本文档E:\TDDOWNLOAD\1.TXT,里面每一行都是姓名,相片比文本里面的名字多。
现在我如何用文本里面的名字去重新命名对应相片的名字?文本里面没出现的名字,相片文件夹下的多余的相片还保持原来的名字。
例如E:\TDDOWNLOAD\075里面有个文件“41302619840227037X+张晓东.jpg”,“E:\TDDOWNLOAD\1.TXT“里面对应的有“张晓东”这一行的话,就把E:\TDDOWNLOAD\075里面的“41302619840227037X+张晓东.jpg”改名成“张晓东.jpg”,没有的话就不改名。
作者: CrLf    时间: 2011-4-25 20:12

本帖最后由 zm900612 于 2011-4-25 20:13 编辑
  1. @echo off
  2. for /f "delims=" %%a in ('
  3. dir /a /b E:\TDDOWNLOAD\075\*.jpg^|findstr /l /v /g:"E:\TDDOWNLOAD\1.TXT"
  4. ') do del /f /a %%a
  5. pause
复制代码

作者: 冷玉公子    时间: 2011-4-25 20:14

个人认为有点困难 等待高手解决吧
作者: Batcher    时间: 2011-4-25 20:16

2# zm900612


你怎么把重新命名给漏掉了?
作者: CrLf    时间: 2011-4-25 20:24

4# Batcher


哦,对呀...边看电影边解题,没看清题意,不过楼主不怕重名么?
作者: CrLf    时间: 2011-4-25 20:30

  1. for /f "delims=" %%a in (a.txt) do (
  2. for %%b in (*%%a*.jpg) do ren "%%b" "%%a.jpg"||ping /n 1 localhost>nul&&ren ren "%%b" "!time::=.!%%a.jpg"
  3. )
复制代码
既然楼主没给例子我就随便写了,不考虑效率、通用性
作者: boyuboyu    时间: 2011-4-26 00:20

虽然没成功,但是还是谢谢2楼的兄弟!
作者: msdlya    时间: 2011-4-26 01:20

本帖最后由 msdlya 于 2011-4-26 01:25 编辑
  1. @echo off
  2. for /f %%i in (1.txt) do (
  3. for /f %%a in ('dir /b .\*.jpg^|find "%%i"') do (
  4. ren %%a %%i.jpg
  5. )
  6. )
  7. pause
复制代码

作者: terse    时间: 2011-4-26 03:06

不知道楼主的+ 是绝对的+  还是相对是+ 文件名不含+ 可去掉代码里的+
另操作前 注意备份原文件
不通用 不处理重复名 或含有重复的
  1. @echo off
  2. CD /D "E:\TDDOWNLOAD\075"
  3. for /f "usebackq delims="%%i in ("E:\TDDOWNLOAD\1.TXT") do (
  4.     ren *+%%i.jpg %%i.jpg
  5. )
  6. pause
复制代码

作者: applba    时间: 2011-4-26 05:14

重名加个提示就行了
作者: boyuboyu    时间: 2011-4-26 10:17

谢谢8楼
问题成功解决




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