无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 3090|回复: 19
打印 上一主题 下一主题

[求助] 批处理set字符串替换支持通配符吗?

[复制链接]
跳转到指定楼层
1#
发表于 2022-10-20 14:40:33 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
微信文档每转发一次,便会复制一份,目录里有很多类似
文本.docx
文本(1).docx
wenzi.xlsx
wenzi(1).xlsx
wenzi(2).xlsx
资料(3).pdf
这样的文件,想要去除后面的(1)(2)(3),用set字符串替换,但是发现好像不支持通配符
源代码如下,感觉有点笨:

@echo off
setlocal EnableDelayedExpansion

dir .\*.* /s /b|findstr "([0-9]).*$">.\list.txt
for /f %%i in (.\list.txt) do (
set filefullname=%%i
set filepath=%%~dpi
set filename=%%~ni
set fileext=%%~xi
set newfilename=!filename!!fileext!
call :ren
)
del .\list.txt
exit

:ren
set "newfilename=%newfilename:(1)=%"
set "newfilename=%newfilename:(2)=%"
set "newfilename=%newfilename:(3)=%"
set "newfilename=%newfilename:(4)=%"
set "newfilename=%newfilename:(5)=%"
set "newfilename=%newfilename:(6)=%"
set "newfilename=%newfilename:(7)=%"
set "newfilename=%newfilename:(8)=%"
if not exist "%filepath%%newfilename%" (
rename "%filefullname%" "%newfilename%"
) else (
del "%filefullname%"
)
goto:eof


假如括号里是(100)那我不得写一百行??

恳请指点






2#
 楼主| 发表于 2022-10-20 14:41:48 | 显示全部楼层
set "newfilename=%newfilename:([0-9])=%"
set "newfilename=%newfilename:(?)=%"

都不行

点评

这样不严谨吧,仅从文件名判断其是否重名?应该计算一下MD5才保险吧,万一删错怎么办  详情 回复 发表于 2022-10-20 19:29
回复

使用道具 举报

3#
 楼主| 发表于 2022-10-20 16:01:58 来自手机 | 显示全部楼层
窄口牛 发表于 2022-10-20 15:49
括号有空格的哇,这个还要考虑到。

空格好办,加一行替换掉空格即可

点评

文件名里可能本来就有空格。  详情 回复 发表于 2022-10-20 16:18
回复

使用道具 举报

4#
 楼主| 发表于 2022-10-20 16:03:01 来自手机 | 显示全部楼层
szwp 发表于 2022-10-20 16:01
FOR /L %variable IN (start,step,end) DO command [command-parameters]

    该集表示以增量形式从开始 ...

这样是可以,感觉代码更复杂了

点评

用for处理就不需要打100条。 将分隔符设为()更容易,但要确定文件名里没有()  详情 回复 发表于 2022-10-20 16:20
回复

使用道具 举报

5#
 楼主| 发表于 2022-10-20 19:47:02 来自手机 | 显示全部楼层
wxinchun92 发表于 2022-10-20 18:06
去除后面的(1)(2)(3)不就重名吗?

所以加了if not exist判断啊
回复

使用道具 举报

6#
 楼主| 发表于 2022-10-20 19:48:01 来自手机 | 显示全部楼层
527104427 发表于 2022-10-20 19:29
这样不严谨吧,仅从文件名判断其是否重名?应该计算一下MD5才保险吧,万一删错怎么办

微信大多数情况下就只是简单的文件复制
回复

使用道具 举报

7#
 楼主| 发表于 2022-10-20 20:06:22 来自手机 | 显示全部楼层
527104427 发表于 2022-10-20 19:29
这样不严谨吧,仅从文件名判断其是否重名?应该计算一下MD5才保险吧,万一删错怎么办

如果考虑修改的话,那就一个都不能删了
回复

使用道具 举报

8#
 楼主| 发表于 2022-10-23 07:42:16 来自手机 | 显示全部楼层
nttwqz 发表于 2022-10-22 17:08
对于经常把用户手机或者电脑硬盘当垃圾回收站使的微信操作系统来说,几十G、几百G的数据建议还是使用微信自 ...

你这个考虑了文件检验,比我的好
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-17 01:31

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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