标题: [文本处理] 批处理代码修改文件名,去掉字母数字,只留下中文字符 [打印本页]
作者: xin74920 时间: 2013-4-17 18:15 标题: 批处理代码修改文件名,去掉字母数字,只留下中文字符
批处理代码修改文件名,去掉字母数字,只留下中文字符,不要改动后缀名。 要求代码要简化
以下两行给以测试:
至上励合 - 棉花糖 - 3edcf06e2e701249db08e3c656ed7d8d.lrc
郑源 - 我不恨你 - 909b0e5489433070aeecad2dbc58d3a5.lrc
------------------------------------
现已有答案不够简化,不理想,参考如下:- @echo off&setlocal enabledelayedexpansion
- set/p "fp=请拖放要进行改名的文件夹到此: "
- pushd "%fp%"
- cls
- for /f "delims=" %%a in ('dir/b/a-d *.*') do (
- set "string=%%~na"
- set "ext=%%~xa"
- set "old=!string!!ext!"
- set "result="
- call :loop
- )
- popd
- echo Done.
- pause
- exit
- :loop
- set "chr="
- set "chr=%string:~0,1%"
- (echo %chr% | findstr "[a-zA-Z0-9]" || set result=%result%%chr%)>nul
- set "string=%string:~1%"
- if "%string%"=="" goto done
- goto loop
- :done
- if not "%result%"=="" (
- echo [!old!] =^> [!result!!ext!]
- ren "!old!" "!result!!ext!"
- )
- exit/b
复制代码
--------------------------------
求大神解答,感谢!!!!!!
--------------------------------
作者: tmplinshi 时间: 2013-4-17 20:27
本帖最后由 tmplinshi 于 2013-4-17 20:38 编辑
http://www. lomont.org/Software/Utilities/Ren2/ren2.exe- ren2 -f "(.*) - [\da-z]+(\.lrc)" "$1$2"
复制代码
如果要包括子目录,加一个 -r 参数。
作者: Bearxy 时间: 2013-4-17 22:32
- @echo off
- for %%a in (*.lrc) do (
- for /f "tokens=1-3 delims=-" %%b in ("%%~na") do (
- echo.%%c|findstr "[a-zA-Z0-9]"&&ren "%%a" "%%b.lrc"||ren "%%a" "%%b-%%c"
- )
- )
复制代码
在百度知道上看到你的问题,不过你描述的不够彻底,所以没回。
作者: 我来了 时间: 2013-4-18 09:15
你等的方法太过高级俺大菜鸟一只,能想到的(不用求人)只有笨法:通过TC输出文件列表,用VIM搞成文件名表,再分别用按键精灵读取修改。
确实很笨。
作者: BAT-VBS 时间: 2013-4-18 10:27
回复 4# 我来了
既然来到了BatHome,那就好好学习批处理吧。
作者: Bearxy 时间: 2013-4-18 14:38
不知道是大家想的太复杂,还是我想的太过于简单。难道这个答案很难实现吗?
我以为到今天应该有很多很多大牛的代码出来才对。。。。本想来观摩一下的。。
我说说我的理解,就当抛砖引玉了。
纵观楼主所有的文件名,无非以下几种情况:
1、中文-字符
2、中文-中文-字符
我们只需要DELIMS=-来分隔一下,判断第二段(%%B)是否为字符不就结了?
难道我想的不对?
作者: BAT-VBS 时间: 2013-4-18 16:18
- @echo off
- setlocal enabledelayedexpansion
- for %%a in (*.lrc) do (
- set file=%%a
- ren "%%a" "!file:~0,-39!.lrc"
- )
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |