找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19671|回复: 2

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

[复制链接]
发表于 2024-1-3 15:58:45 | 显示全部楼层 |阅读模式
例如我有很多图片文件名像“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位字符串正则怎么写?或者有什么其它方法能实现这个需求?
发表于 2024-1-3 16:08:01 | 显示全部楼层
你是想重命名对吧?那就用不着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
复制代码
 楼主| 发表于 2024-1-3 17:12:37 | 显示全部楼层
回复 2# qixiaobin0715


    原来 for /f  %%~nj 还可以这么用!!果真是妙啊,感谢感谢 :victory:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:35 , Processed in 0.017133 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表