ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1956|回复: 21

[求助] 请教关于bat批处理通过txt文本内容重命名文件的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-6-16 22:01 | 显示全部楼层 |阅读模式
本帖最后由 idiocy 于 2023-6-19 08:06 编辑

请教关于bat批处理通过txt文本内容重命名文件的问题 2023-06-16:




高人好,
小弟想请教一下,
关于bat批处理通过txt文本内容重命名文件的问题.


在网上找了好多批处理,
测试运行皆不理想,
找了个写的很长很全的批处理,
结果打开cmd窗口里面的中文不知道为什么显示的是乱码,
编辑时已经选择了“字体”为“脚本(R):中文 GB2312”结果中文还是显示的是乱码.


举例:
Windows10-64位系统路径为
D:\重命名文件夹
里面有很多个图片文件,
后缀名有
.png
.jpg
.bmp
等等等等,
文件夹里面还有个name.txt文本文档,
文本文档里面的内容为:
10 荔枝虾球 - 111210
02 煎羊肚菌 - 111202
08 脆皮猪手 - 111208
12 冰镇凤梨 - 111212
04 蟹黄煲 - 111204
07 金钩百合 - 111207
05 金牌杏仁酥 - 111205
11 砂锅回头鱼 - 111211
13 田园风光好 - 111213
01 铁板牛仔骨 - 111201
06 铁棍山药 - 111206
09 咸蛋黄 - 111209
03 海鲜豆腐 - 111203


小弟想通过.bat批处理文件先找到某路径下面的“name.txt”文本文档,
然后再识别出这个文本文档里面的内容,
来按文本文档里面的顺序重命名某路径下面的“重命名文件夹”文件夹里面的图片文件,
当然是会先准备好有几个文件就对应写几个文件重命名的名称放在“name.txt”文本文档里面.


网上说有种方法是文本文档里面写重命名的格式要是“原文件名称|目标名称”,
小弟不想使用该方法,
因为还要用到Excel表,
先提取出原文件名称,
然后再对应粘贴目标名称,
然后再复制到文本文档里面,
过程有点太繁琐了.


小弟还想再请教一下,
文件夹里面的很多文件名称太长了,
请问可以使用批处理来只保留后缀名前面的6个字符吗?
就是只保留文件名称后面6个字符的批处理应该怎么写呢?
感激不尽啊.


因附件大小上传有限,
有8张图片直接用txt文本文档改原本图片的名称和后缀名创建的,
用来模拟原本的图片名称和后缀名.


2023年06月16日 星期五








@echo off
@REM @Author: xianghongai@gmail.com
title 通过文本内容重命名文件
setlocal EnableDelayedExpansion
:GTCONTINUE
cls
echo 通过文本内容重命名文件
echo -----------------------------
set /p importTxt=拖文本文件按Enter键:
set /p filesPath=拖目录路径按Enter键:
set i=0
for /f "usebackq tokens=1 delims==" %%a in (`more /s %importTxt%`) do (
    set /a i+=1
    set "author[!i!]=%%a"
)
set j=0
for /f "usebackq" %%b in (`dir /b "%filesPath%\*.*"`) do (
    set /a j+=1
)
set k=!i!,!j!
set nMax=0
for %%a in (%k%) do (
   if %%~a gtr !nMax! set nMax=%%~a
)
rem echo 最大值:!nMax!
set nMin=!nMax!
for %%a in (%k%) do (
   if %%~a lss !nMin! set nMin=%%~a
)
rem echo 最小值:!nMin!

set c=0
set FilesExist=0
echo.
echo 文件即将按以下格式重命名:
echo -----------------------------
for /f "usebackq delims==" %%b in (`dir /a-d /b /on /tc "%filesPath%"`) do (
     set /a c+=1
     cd /d %filesPath%
     if !c! leq !nMin! (
        for %%a in (!c!) do (
            if not exist !author[%%a]!%%~xb (
                echo "%%b" "!author[%%a]!%%~xb"
            ) else (
                set /a FilesExist+=1
                echo 已有文件 "!author[%%a]!%%~xb"
            )
         )
     )
)
echo -----------------------------
if !FilesExist! gtr 0 (
    echo.
    echo 当前目录有 !FilesExist! 个相同命名的文件,
    echo 可能会引起文本内容行和对应文件的错位!
    echo.
)
echo 按Enter键确认操作
pause >nul
set d=0
for /f "usebackq delims==" %%b in (`dir /a-d /b /on /tc "%filesPath%"`) do (
    set /a d+=1
    cd /d %filesPath%
     if !d! leq !nMin! (
        for %%a in (!d!) do ( if not exist "!author[%%a]!%%~xb" ( ren "%%b" "!author[%%a]!%%~xb" ) )
     )
)
echo 搞定
pause >nul
goto GTCONTINUE
exit











D:\重命名文件夹.rar

1.98 MB, 下载次数: 18

TA的精华主题

TA的得分主题

发表于 2023-6-17 03:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 wanghan519 于 2023-6-17 09:57 编辑

需要附件!
如果嫌从excel粘贴到txt里麻烦,那就发原始的xlsx,批处理直接从里面读取或者论坛上的朋友写vba都方便,重命名保留最后6位这种,系统自带的powershell很方便,bat也可以调用它,或者拷贝一份busybox用bat调用也方便,方法很多,但都需要上传附件,最原始的文件名表,或者没有文件名表,告诉这表是哪来的,模拟几个图片文件也行

比如只是截取后面那串数字,也不用txt文件
image.png

TA的精华主题

TA的得分主题

发表于 2023-6-17 08:53 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-18 07:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

也可以,
请问高人可以帮小弟写一写VBS的代码吗?

TA的精华主题

TA的得分主题

发表于 2023-6-18 07:45 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
懒的看,讲一下我的思路。
读取文件的路径到Excel表
将路径与重命表一一对应,
再生成一个bat文件,运行一下即可

TA的精华主题

TA的得分主题

发表于 2023-6-18 12:24 | 显示全部楼层
idiocy 发表于 2023-6-18 07:34
也可以,
请问高人可以帮小弟写一写VBS的代码吗?

附件?                 

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-19 08:09 | 显示全部楼层
wanghan519 发表于 2023-6-17 03:55
需要附件!
如果嫌从excel粘贴到txt里麻烦,那就发原始的xlsx,批处理直接从里面读取或者论坛上的朋友写vb ...


已重新编辑上传了附件,
因附件大小上传有限,
有8张图片直接用txt文本文档改原本图片的名称和后缀名创建的,
用来模拟原本的图片名称和后缀名.
望高人能够指教,
三克油了.

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-19 08:10 | 显示全部楼层


已重新编辑上传了附件,
因上传的附件大小有限制,
故里面有8张图片直接用txt文本文档改原本图片的名称和后缀名创建的,
用来模拟原本的图片名称和后缀名.
望高人能够指教,
三克油了.

TA的精华主题

TA的得分主题

发表于 2023-6-19 09:57 | 显示全部楼层
idiocy 发表于 2023-6-19 08:09
已重新编辑上传了附件,
因附件大小上传有限,
有8张图片直接用txt文本文档改原本图片的名称和后缀名创 ...

pwsh套了层bat的皮,只能说win10环境暂时能用。。。
动画.gif

a.7z

306 Bytes, 下载次数: 20

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-19 10:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wanghan519 发表于 2023-6-19 09:57
pwsh套了层bat的皮,只能说win10环境暂时能用。。。





非常非常的感谢高人的指教啊,
小弟向高人学习了.


请问高人写的这条命令不用分行的是吗?
小弟看命令里面没有路径或文件名之类的是不是不用更改路径或name.txt的文件名称是吗?
只需要在name.txt里面更改想要重命名的名称就可以了,
然后执行.bat文件就会按照name.txt里面命名的先后顺序来重命名文件夹里面的文件名称了是吗?


太厉害了```
又涨新知识了.

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 16:01 , Processed in 0.042677 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表