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

[文本处理] 批处理命令findstr如何用正则匹配一个32位的字符串?

例如我有很多图片文件名像“Crush_Gray_Color_2c_3c623921c6de4d00bebf7c5a6fc63485.jpg”这样的文件,注意中间的下划线数量是不定的,我想将后面的32位字符串查找出来替换为其它字符串例如“x”,像这样:“Crush_Gray_Color_2c_x.jpg”,请指教!32位字符串也是变量。
过程代码大概这样:
set t=“Crush_Gray_Color_2c_3c623921c6de4d00bebf7c5a6fc63485.jpg”
......
set a=找到的32位字符串
set "t=%t:a=x%" (这句也请指教如何将变量a用到替换中?)
echo %t% (最后输出:Crush_Gray_Color_2c_x.jpg)
-----------------------------------------------------------
用findstr的话:echo t|findstr "???" 32位字符串正则怎么写?或者有什么其它方法能实现这个需求?

你是想重命名对吧?那就用不着findstr:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d *_*.jpg') do (
  4.     set "str1=%%i"
  5.     set "str2=!str1:_=\"
  6.     for /f "delims=" %%j in ("!str2!") do ren "%%i" "!str1:%%~nj=x!"
  7. )
  8. pause
复制代码

TOP

回复 2# qixiaobin0715


    原来 for /f  %%~nj 还可以这么用!!果真是妙啊,感谢感谢 :victory:

TOP

返回列表