中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-09 07:57
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 看完相关贴后仍没想到解决方法(重命名) 查看 770 回复 5
楼 主 看完相关贴后仍没想到解决方法(重命名) 发表于 2008-07-27 10:51 ·  中国 贵州 贵阳 电信
新手上路
积分 6
发帖 3
注册 2008-07-25 17:25
18年会员
UID 122097
性别 男
状态 离线
看了相关的贴都是关于文件和文件名一一对应的改法。现在我pic目录下有若干JPG,文件名为1.jpg,2.jpg,....n.jpg但是不一定1~n都有,同时有name.txt中存放了1~N的文件名,也就是说我想把想应的jpg文件改成在TXT文件中相对应的文件名。请大家帮帮忙。
注:文件和文件名不是一一对应,可能文件中少了33.jpg,58.jpg但TXT中仍存在33.jpg和58.jpg的文件名!
先谢谢大家了!

[ Last edited by pullyong on 2008-7-27 at 02:37 PM ]
2 发表于 2008-07-27 12:22 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
先假设所有的jpg文件和name.txt是放在d:\pic文件夹内,实际应用请楼主自己修改:

@echo off&setlocal enabledelayedexpansion
set "n=-1"
for /f "delims=" %%i in ('dir /s /a-d /b d:\pic\*.jpg') do (
set /a n+=1&call :lp
ren "%%i" !str!
)
echo 全部搞定。&pause>nul&goto :eof
:lp
if %n% equ 0 (set "m=") else (set "m=skip=%n%")
for /f "%m% dielims=" %%i in (name.txt) do set "str=%%i"&goto :eof
批处理之家新域名:www.bathome.net
3 发表于 2008-07-27 12:41 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
写了一个 但不知道是否有同名文件存在 备份后 试

@echo off
for /f "tokens=*" %%i in ('dir /b /s /a-d *.jpg') do call:lp "%%i"
:lp
for /f "usebackq tokens=*" %%j in ("name.txt") do (
if not defined %%j set %%j=a&ren %1 "%%j"&goto :eof)
pause
简单!简单!再简单!
4 发表于 2008-07-27 14:14 ·  中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
发现来dos论坛后 头大了很多……郁闷 极度抑郁 ……
每次看到这类问题 我都出冷汗的……
5 发表于 2008-07-27 14:33 ·  中国 贵州 贵阳 电信
新手上路
积分 6
发帖 3
注册 2008-07-25 17:25
18年会员
UID 122097
性别 男
状态 离线
Originally posted by terse at 2008-7-27 12:41 PM:
写了一个 但不知道是否有同名文件存在 备份后 试

@echo off
for /f "tokens=*" %%i in ('dir /b /s /a-d *.jpg') do call:lp "%%i"
:lp
for /f "useb ...

谢谢!问题解决了!能帮我解释下每句什么意思吗???
6 发表于 2008-07-27 14:34 ·  中国 贵州 贵阳 电信
新手上路
积分 6
发帖 3
注册 2008-07-25 17:25
18年会员
UID 122097
性别 男
状态 离线
Originally posted by bat-zw at 2008-7-27 12:22 PM:
先假设所有的jpg文件和name.txt是放在d:\pic文件夹内,实际应用请楼主自己修改:

@echo off&setlocal enabledelayedexpansion
set "n=-1"
for /f "d ...

提示命令语法错误,但仍然很感谢!
论坛跳转: