标题: [文件操作] 批处理怎样根据CSV对文件进行对比批量重命名? [打印本页]
作者: Macrae 时间: 2019-12-11 15:26 标题: 批处理怎样根据CSV对文件进行对比批量重命名?
我这样写的,但是只能对当前目录下的文件生效,怎么让这个批处理对子目录的文件也能命名?
求大佬们帮忙修改一下。。。。。万分感谢!- Set Path=D:\RenameTool\Rename.csv
- for /f "delims=" %%a in (%Path%) do (
- for /f "tokens=1-2 delims=," %%a in ("%%a") do (
- ren "%%~a" "%%~b"
- echo %%~nxa 重命名为..... %%~nxb
- )
- )
复制代码
另外如果该目录下没有CSV表里面的文件会提示没有找到文件,怎么关闭这个回显?没有文件就不执行重命名
感谢大佬帮忙解答!大佬年会中大奖!
作者: terse 时间: 2019-12-11 21:12
加个IF呢- if exist "%%~a" (
- ren "%%~a" "%%~b"
- echo %%~nxa 重命名为..... %%~nxb
- )
复制代码
作者: Macrae 时间: 2019-12-12 15:18
回复 2# terse
万分感谢没有回显了,
大大还有个问题还请帮忙,就是我是拖拽整个文件夹到这个批处理上的,但是这个批处理只是读当前文件夹下的所有文件,并没有读子目录里面的文件,
该怎么改呢?还请赐教~
作者: terse 时间: 2019-12-12 16:15
回复 3# Macrae
这样试一下- @echo off&setlocal enabledelayedexpansion
- if "%~1" == "" (set d=%~dp0) else set "d=%~1\"
- Set Path=D:\RenameTool\Rename.csv
- for /f "delims=" %%a in (%Path%) do (
- for /f "tokens=1-2 delims=," %%a in ("%%a") do (
- ren "%d%%%~a" "%d%%%~b"
- echo %d%%%~nxa 重命名为..... %d%%%~nxb
- )
- )
复制代码
作者: Macrae 时间: 2019-12-12 16:36
回复 4# terse
提示系统找不到指定文件
作者: Macrae 时间: 2019-12-12 17:14
回复 4# terse
我有个目录A,A目录下有10个文件夹,每个文件夹里面有需要命名的文件
拖动A目录到批处理上,提示系统找不到文件
作者: terse 时间: 2019-12-12 17:31
本帖最后由 terse 于 2019-12-12 17:39 编辑
- @echo off&setlocal enabledelayedexpansion
- if "%~1" == "" (set d=%~dp0) else set "d=%~1\"
- Set Path=D:\RenameTool\Rename.csv
- for /f "delims=" %%a in (%Path%) do (
- for /f "tokens=1-2 delims=," %%a in ("%%a") do (
- for /f "tokens=*" %%d in ('dir /b/s/ad "%d%"') do (
- if exist "%%d\%%~a" (
- ren "%%d\%%~a" "%%d\%%~b"
- echo %%d\%%~nxa 重命名为..... %%d\%%~nxb
- )
- )
- )
- )
复制代码
作者: Macrae 时间: 2019-12-13 10:45
回复 7# terse
提示语法错误?
作者: terse 时间: 2019-12-13 13:09
回复 8# Macrae
ren "%%d\%%~a" "%%d\%%~b" 前面加上 ECHO 看显示什么结果
作者: terse 时间: 2019-12-13 13:13
回复 terse
提示语法错误?
Macrae 发表于 2019-12-13 10:45
因为按你上面代码改的 没测试 靠你反馈了
作者: Macrae 时间: 2019-12-13 14:33
回复 10# terse
echo "%%d\%%~a" "%%d\%%~b"
这个是正常的
ren "%%d\%%~a" "%%d\%%~b"
提示命令语法错误
似乎 ren 不支持带路径的值输入?
作者: Gin_Q 时间: 2019-12-13 16:17
回复 11# Macrae
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\user>ren /?
重命名文件。
RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.
请注意,您不能为目标文件指定新的驱动器或路径。
C:\Users\user>
作者: Gin_Q 时间: 2019-12-13 16:23
回复 11# Macrae
path不要用来做变量名(和系统环境变量冲突)。
作者: terse 时间: 2019-12-13 16:59
回复 11# Macrae
去掉后面路径复制代码
作者: Macrae 时间: 2019-12-13 18:35
本帖最后由 Macrae 于 2019-12-14 10:04 编辑
回复 14# terse
回复 12# Gin_Q
感谢两位大大的帮忙,已经成功运行了!
以下是最后的代码
回复 12# Gin_Q - @echo off&setlocal enabledelayedexpansion
- Set CSV=D:\RenameTool\FrameRename.csv
- set /a num=0
- for /f "delims=" %%a in (%CSV%) do (
- for /f "tokens=1-2 delims=," %%a in ("%%a") do (
- for /f "tokens=*" %%d in ('dir /b/s/ad "%d%"') do (
- if exist "%%d\%%~a" (
- ren "%%d\%%~a" "%%~b"
- Set /a num+=1
- echo %%~nxa Rename to %%~b
- )
- )
- )
- )
- echo %num% Files Rename Successful !!!!
- pause
复制代码
作者: terse 时间: 2019-12-13 19:06
回复 15# Macrae
目测少了定义D 这样代码里%d%为空
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |