Board logo

标题: 看完相关贴后仍没想到解决方法(重命名) [打印本页]

作者: pullyong     时间: 2008-7-27 10:51    标题: 看完相关贴后仍没想到解决方法(重命名)
看了相关的贴都是关于文件和文件名一一对应的改法。现在我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 ]

作者: bat-zw     时间: 2008-7-27 12:22
先假设所有的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

作者: terse     时间: 2008-7-27 12:41
写了一个 但不知道是否有同名文件存在 备份后 试
@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

作者: 523066680     时间: 2008-7-27 14:14
发现来dos论坛后 头大了很多……郁闷 极度抑郁 …… 每次看到这类问题 我都出冷汗的……

作者: pullyong     时间: 2008-7-27 14:33
Originally posted by terse at 2008-7-27 12:41 PM: 写了一个 但不知道是否有同名文件存在 备份后 试 [code] @echo off for /f "tokens=*" %%i in ('dir /b /s /a-d *.jpg') do call:lp "%%i" :lp for /f "useb ...
谢谢!问题解决了!能帮我解释下每句什么意思吗???

作者: pullyong     时间: 2008-7-27 14:34
Originally posted by bat-zw at 2008-7-27 12:22 PM: 先假设所有的jpg文件和name.txt是放在d:\pic文件夹内,实际应用请楼主自己修改: [code] @echo off&setlocal enabledelayedexpansion set "n=-1" for /f "d ...
提示命令语法错误,但仍然很感谢!