标题: [文件操作] 批处理如何给带Unicode编码的文件改名 [打印本页]
作者: ngd 时间: 2014-2-27 14:54 标题: 批处理如何给带Unicode编码的文件改名
批处理如何给带 2® 之类的Unicode编码的文件改名
作者: DAIC 时间: 2014-2-28 09:30
c:\Test>dir /b *.txt
2®.txt
c:\Test>dir /x *.txt
Volume in drive C is DAIC
Volume Serial Number is bbs.bathome.net
Directory of c:\Test
02/27/2014 04:56 PM 1,626 2A07E~1.TXT 2®.txt
1 File(s) 1,626 bytes
0 Dir(s) 236,808,275,968 bytes free
c:\Test>ren 2A07E~1.TXT a.txt
c:\Test>dir /b *.txt
a.txt
作者: ngd 时间: 2014-2-28 13:37
回复 2# DAIC
不行呀,这些Unicode编码的字符就没法写在bat文件中,如果把bat文件另存为Unicode编码的,又运行不了
这是我用来改名的批处理
@echo off & setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b') do (
set "var=%%a"
ren "!var!" "!var:®=!"
)
作者: DAIC 时间: 2014-2-28 15:03
回复 3# ngd
2楼的意思是,用 dir /x 获取短名,根据短名来 ren
作者: apang 时间: 2014-2-28 20:07
http://bbs.bathome.net/viewthread.php?tid=12824
保存为utf-8无bom- @echo off
- chcp 65001
- for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
- set "f=%%a"
- setlocal enabledelayedexpansion
- set "new=!f:®=!"
- if "!f!" neq "!new!" ren "!f!" "!new!"
- endlocal
- )
- pause
复制代码
vbs无鸭梨- Set fso = CreateObject("Scripting.FileSystemObject")
- char = ChrW(174)
- For Each file in fso.GetFolder(".").Files
- If LCase(Right(file,4)) = ".txt" and InStr(file.Name,char) Then
- file.Name = Replace(file.Name,char,"")
- End If
- Next
复制代码
作者: PowerShell 时间: 2014-3-1 11:17
你还在用bat吗?
powershell代码
作者: terse 时间: 2014-3-1 12:27
powershell 可以这样 去掉文件名中的 ®- Get-ChildItem -Path c:\ |Where-Object {!$_.PSIsContainer} |
- %{
- $_.MoveTo(((Split-path $_) + $_.name -Replace '®', ''))
- }
复制代码
作者: PowerShell 时间: 2014-3-1 13:24
®
作者: PowerShell 时间: 2014-3-1 13:25
[i=s] 本帖最后由 PowerShell 于 2014-3-1 13:27 编辑 [/i]
@ 我咋搞不出来呢? 页面和源码都不行
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |