Board logo

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

作者: tco99    时间: 2024-1-3 15:58     标题: 批处理命令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位字符串正则怎么写?或者有什么其它方法能实现这个需求?
作者: qixiaobin0715    时间: 2024-1-3 16:08

你是想重命名对吧?那就用不着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
复制代码

作者: tco99    时间: 2024-1-3 17:12

回复 2# qixiaobin0715


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




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