Board logo

标题: [文件操作] 批处理怎么删除文件夹中文件名的中文符号? [打印本页]

作者: xuhuangbin    时间: 2024-11-24 22:56     标题: 批处理怎么删除文件夹中文件名的中文符号?

怎么删除文件夹中文件名的中文符号
作者: Batcher    时间: 2024-11-25 08:08

回复 1# xuhuangbin


请给一个真实的例子说明一下你的需求吧,比如操作之前是怎样的,操作之后变成啥样?
如果需要上传文件,请用使用网盘。

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: czjt1234    时间: 2024-11-25 10:31

  1. rem 另存为 ANSI 编码 bat
  2. ' & cls & cscript.exe /nologo /e:vbscript "%~f0" %* & pause & exit /b
  3. p = "."    '当前路径。可以指定其它路径,比如 d:\test\
  4. Set oWshShell = CreateObject("WScript.Shell")
  5. Set oFSO = CreateObject("Scripting.FileSystemObject")
  6. p = oFSO.GetAbsolutePathName(p)
  7. oWshShell.CurrentDirectory = p
  8. For Each i In oFSO.GetFolder(p).Files
  9.     s = oFSO.GetFileName(i)
  10.     t = ""
  11.     For j = 1 To Len(s)
  12.         If CLng("&H" & Hex(Asc(Mid(s, j, 1)))) < 127 Then t = t & Mid(s, j, 1)
  13.     Next
  14.     If Not oFSO.FileExists(t) Then oFSO.MoveFile s, t
  15. Next
  16. wsh.Echo "ok"
复制代码
只保留ascii编码的字符
只处理当前文件夹下的文件
如果同名文件已存在则跳过
作者: aloha20200628    时间: 2024-11-25 12:01

本帖最后由 aloha20200628 于 2024-11-25 15:42 编辑

回复 1# xuhuangbin

以下代码存为 test.bat 运行》剔除当前目录下每个文件名中的中文字符(忽略只有中文字符的文件名)...
  1. @echo off &for /f "delims=" %%F in ('dir/b/a-d') do (
  2.    set "F=%%F" &set "nF=%%~nF" &setlocal enabledelayedexpansion
  3.    call :cutHZ
  4.    if defined _nF if "!_nF!" neq "%%~nF" (ren "!F!" "!_nF!%%~xF")
  5.    endlocal
  6. ) 2>nul
  7. pause&exit/b
  8. :cutHZ
  9.    if "!nF!"=="" (exit/b) else (
  10.       set "c=!nF:~,1!" &if "!c!" leq "Z" (set "_nF=!_nF!!c!")
  11.       set "nF=!nF:~1!" &goto :cutHZ
  12.    )
  13.    exit/b
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2