[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【已解决】批处理如何删除文件夹名中的中文/汉字

如题
批处理如何获取文件夹名并删除特定的字符或者字符串(指 汉字)后重命名文件夹,不改变文件夹的路径。

汉字部分的获取并删除,汉字部分长度随机


见8楼
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

ren2应该可以的

TOP

回复 2# wskwfkbdn


    不用第三方,来一发。我是win10系统

TOP

你什么系统我不管,怎么简单怎么来,前人栽树后人乘凉,之所以有人要开发这样的第三方,就是为了实用,这样的问题如果不用正则表达式处理,只能使用笨方法

TOP

回复 4# wskwfkbdn


    问题就是没用过ren2

TOP

回复 5# wpy4206


    论坛搜索

TOP

  1. powershell -c "dir|?{$_.PSIsContainer}|%%{ren $_ -NewName $($_.Name -replace '[\u4E00-\u9FA5]','')}"
  2. pause
复制代码
1

评分人数

TOP

本帖最后由 pcl_test 于 2017-5-29 21:14 编辑
  1. /*&cls
  2. @echo off
  3. rem dir /ad/b/s则可处理子文件夹
  4. (dir /ad/b^|sort /r)|cscript -nologo -e:jscript "%~f0"
  5. pause&exit
  6. */
  7. var fso = new ActiveXObject('Scripting.Filesystemobject');
  8. while(!WSH.StdIn.AtEndOfStream){
  9.     var line = WSH.StdIn.ReadLine();
  10.     var folder = fso.GetFolder(line);
  11.     var fpath = fso.GetParentFolderName(line);
  12.     var newname = folder.Name.replace(/[\u4E00-\u9FA5]/g,'');
  13.     var newfolder = fpath?fpath+'\\'+newname:newname;
  14.     if(newname&&!fso.FolderExists(newfolder))folder.Name=newname;
  15. }
  16. WSH.Echo('Done');
复制代码

TOP

ren2第三方,地址http://batch-cn.qiniudn.com/tool/ren2.exe
  1. ren2 "([0-9、]+)[^0-9\.]+" "$1"
复制代码
回复 3# wpy4206

TOP

纯批思路:tokens=* delims=0123456789 … echo !str:%%a=!

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /ad ^| findstr "^[0-9]"') do (
  4.     set "str=%%i"
  5.     for /f "tokens=* delims=0123456789、" %%j in ("%%i") do (
  6.         if "%%j" neq "" (
  7.             ren "%%i" "!str:%%j=!"
  8.         )
  9.     )
  10. )
复制代码
2

评分人数

TOP

返回列表