标题: [文件操作] [已解决]批处理如何替换文件名中的unicode字符? [打印本页]
作者: csydown 时间: 2013-2-4 12:23 标题: [已解决]批处理如何替换文件名中的unicode字符?
请问批处理如何把文件名中的・等unicode字符替换或抹去?
最近弄了个音乐压制工具,因为解码器aac.exe不支持特殊字符输入,即使加了""也会跳过,所以需要把文件名中的特殊字符替换。
请问各位高手这个如何实现?十分感谢!
感谢各位的提议,已经解决了!谢谢!
作者: BAT-VBS 时间: 2013-2-4 13:18
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b *.mp3') do (
- set str=%%a
- set str=!str:・=_!
- ren "%%a" "!str!"
- )
复制代码
作者: csydown 时间: 2013-2-4 19:14
本帖最后由 csydown 于 2013-2-5 12:51 编辑
回复 2# BAT-VBS
非常感谢!!不过您的代码因为含有unicode字符所以无法保存,请问有没有其它办法?谢谢!
作者: csydown 时间: 2013-2-4 19:18
本帖最后由 csydown 于 2013-2-5 12:52 编辑
正在研究新办法…
作者: Demon 时间: 2013-2-5 14:52
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b *.mp3') do (
- set str=%%a
- set str=!str:?=_!
- ren "%%a" "!str!"
- )
复制代码
作者: 523066680 时间: 2013-2-5 15:09
本帖最后由 523066680 于 2013-2-5 16:10 编辑
楼主,可以建立一个 "unicode字符".spec 这样的文件
批处理用ASCII 文本编写, 先用for %%a in (*.spec) do .... 获取%%~na
这个%%~na就是unicode字符
然后借用它
测试结果:当我没说
作者: CrLf 时间: 2013-2-5 15:22
存为 utf-8 格式,在代码头部加上一条 chcp 65001
见:http://bbs.bathome.net/viewthread.php?tid=12824
作者: 523066680 时间: 2013-2-5 15:43
存为 utf-8 格式,在代码头部加上一条 chcp 65001
见:
CrLf 发表于 2013-2-5 15:22
哟 是zm吗?好专业的赶脚
作者: Demon 时间: 2013-2-5 15:44
存为 utf-8 格式,在代码头部加上一条 chcp 65001
见:
CrLf 发表于 2013-2-5 15:22
XP的CMD有BUG,不支持chcp 65001
作者: csydown 时间: 2013-2-5 16:15
回复 5# Demon
这个方法可以~~非常感谢!!
作者: csydown 时间: 2013-2-5 16:17
回复 6# 523066680
谢谢建议!!其实最早想出个非常麻烦的方法,就是把文件名导入文本文件,再重命名该文件到那个字符……
不过bat貌似自动省略了一次重命名,只能二次重命名了……
不过这个没有科学依据,而且非常繁琐,效率低下,还是高手们的好~- for %%a in (*.*) do (
- echo %%a>net.xxcv
- for /f "delims=" %%b in ('type net.xxcv') do (
- rename "net.xxcv" "%%b.xxcv"
- for /f "delims=" %%c in ('dir /b *.xxcv') do (
- rename "%%a" "%%c.net"
- del /f /q *.xxcv
- )))
- rename "*.net" "*.."
- rename "*.xxcv" "*.."
复制代码
作者: csydown 时间: 2013-2-5 16:18
回复 7# CrLf
谢谢,学习了~
作者: 523066680 时间: 2013-2-5 16:21
本帖最后由 523066680 于 2013-2-5 16:38 编辑
5楼那个是可以的。因为for 'dir xxx'的时候那个字符变成?了。
我发现直接for (*.mp3) 就可以保持原文
好了,既然想了个偏方,那就弄一个可以的
建立一个 "・.spec"
然后- @echo off
- setlocal enabledelayedexpansion
- for %%a in (*.spec) do (set str=%%~na)
-
- for %%a in (*.mp3) do (
- set n=%%a
- set n=!n:%str%=-!
- ren "%%a" "!n!"
- )
-
- pause
复制代码
我的文件原来的名单,当然还有个批处理.bat
・.spec
董贞 ・ 01.剑如虹.[贞江湖].mp3
董贞 ・ 03.墨魂.[贞江湖].mp3
董贞 ・ 05.月光.[贞江湖].mp3
更名后的名单
・.spec
董贞 - 01.剑如虹.[贞江湖].mp3
董贞 - 03.墨魂.[贞江湖].mp3
董贞 - 05.月光.[贞江湖].mp3
还有,我推荐的几首歌都不错的
作者: CrLf 时间: 2013-2-5 17:46
回复 13# 523066680
但 5 楼那是通配匹配,很可能致错,比如 [・].spec 用 ren [?].spec 的话,会对 [a].spec 这样的文件名误判
作者: 523066680 时间: 2013-2-5 17:54
回复 14# CrLf
总感觉以前论坛见过,是改了ID。 不是ZM?
作者: CrLf 时间: 2013-2-5 19:03
回复 15# 523066680
zm是熟么,是以下之一吗?- 真没在么
- 肿么证明
- 咋没自摸
- 做梦找骂
- 遵命折磨
- 藏民在忙
- 转卖罪名
- 祖母最萌
- 周末专卖
- 真妙
复制代码
作者: 523066680 时间: 2013-2-5 21:41
回复 16# CrLf
反正是不能吃的。
作者: BAT-VBS 时间: 2013-2-7 10:03
回复 16# CrLf
自摸小王子
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |