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

批处理如何在数字与文字之间添加指定字符?

我有一批文件,命名如此:1.1.2海燕;1.2.1社戏,我想改成1.1.2《海燕》;1.2.1《社戏》,请问该怎样操作呢?

TOP

文件都是有后缀的,你上面没说,假设为txt
  1. @echo off&&setlocal enabledelayedexpansion
  2. for /f "tokens=1,2,3 delims=." %%i in ('dir /b/on *.txt') do (
  3.    set "pp=%%k》"
  4.    set pp=!pp:1=1《!
  5.    set pp=!pp:2=2《!
  6.    set pp=!pp:3=3《!
  7.    set pp=!pp:4=4《!
  8.    set pp=!pp:5=5《!
  9.    set pp=!pp:6=6《!
  10.    set pp=!pp:7=7《!
  11.    set pp=!pp:8=8《!
  12.    set pp=!pp:9=9《!
  13.    ren %%i.%%j.%%k.txt %%i.%%j.!pp!.txt
  14. )
  15. pause
复制代码
目的,学习批处理

TOP

谢谢,不过如果文件名有2.1.10海鸥这种情况该怎么办呢?

TOP

本帖最后由 pujizhongxue 于 2016-1-30 20:26 编辑

谢谢,如果文件名像3.10海鸥这种情况该怎么办呢?

TOP

在里面添一句
set pp=!pp:10=10《!
目的,学习批处理

TOP

文件名出现了1只小老鼠。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

正则表达式重命名工具。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

我表述不太清楚,假如文件名汉字前面的序号是1.5,2.10,3.1.11,3.1.12甚至3.1.80这样的情况该怎么办啊!总不能一直加到80吧!而且序号位数不同又该怎么处理呢?多谢!

TOP

第三方
  1. ren2 -f "(\d[\.\d]*)(.+)(\.[^\.]+)" "$1《$2》$3"
复制代码

TOP

本帖最后由 hlzj88 于 2016-1-30 21:09 编辑

高深的代码搞不了,,好在有更高手来答了
目的,学习批处理

TOP

本帖最后由 WHY 于 2016-1-31 22:48 编辑

test.bat
  1. @if (0)==(0) echo off
  2. for /f "delims=" %%i in ('dir /b /a-d^|cscript //nologo //e:jscript "%~f0"') do ren %%i
  3. pause & exit
  4. @end
  5. var arr = WSH.StdIn.ReadAll().split('\r\n');
  6. var reg = /^((\d+\.)+\d+)([^《》]+?)(\.[^.]+)?$/;
  7. for(var i in arr){
  8.     if(reg.test(arr[i])) WSH.Echo(arr[i].replace(reg, '"$&" "$1《$3》$4"'));
  9. }
复制代码

TOP

本帖最后由 WHY 于 2016-1-31 22:50 编辑

test.ps1
右键使用PowerShell运行
  1. dir | foreach-Object{
  2.     if($_ -is [System.IO.FileInfo]){
  3.         $name = $_.name -replace '^((\d+\.)+\d+)([^《》]+?)(\.[^.]+)?$', '$1《$3》$4'
  4.         ren -Path $_.Get_FullName() -NewName $name
  5.     }
  6. }
复制代码

TOP

回复 12# WHY


    说明一下是powershell会更好。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 1# pujizhongxue
  1. @echo off&(setlocal enabledelayedexpansion)>nul 2>nul
  2. for /r ".\" %%i in (*.txt)do (set "name=%%~ni"
  3. for /f "delims=" %%j in ("%%~ni")do (
  4.   set "name_xj=%%~xj"
  5.   for %%k in (0,1,2,3,4,5,6,7,8,9,.)do set "name_xj=!name_xj:%%k=!"
  6. )
  7. for /f "delims=" %%j in ("!name_xj!")do set "name=!name:%%j=<<%%j>>!"
  8. rem:下一行是改变后的名称
  9. echo,"%%~i" "!name!%%~xi"
  10. )
  11. pause
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 14# /zhqsystem/zhq
谢谢,我把你的代码把echo,改成ren,结果却提示:文件名、目录名或卷标语法不正确。请问该如何处理啊?

TOP

返回列表