标题: [文件操作] 怎么写批处理,批量删除 文件名中指定的字符串? [打印本页]
作者: bathelp 时间: 2017-11-22 23:01 标题: 怎么写批处理,批量删除 文件名中指定的字符串?
我想 批量处理 data文件夹下的所有txt文件的
文件名包含有 P 和 注 这两个字符的 都删除掉
比如
p1111注.txt
p1555注.txt
p3331注.txt
处理后结果为
1111.txt
1555.txt
3331.txt
作者: yhcfsr 时间: 2017-11-23 01:58
- @echo off
- :start
- set /p str= 要删除的字符串:
- echo.
- for /f "delims=" %%a in ('dir /s /b') do (
- if "%%~nxa" neq "%~nx0" (
- set "file=%%a"
- set "name=%%~na"
- set "extension=%%~xa"
- call set "name=%%name:%str%=%%"
- setlocal enabledelayedexpansion
- ren "!file!" "!name!!extension!" 2>nul
- endlocal
- )
- )
- goto start
复制代码
作者: bathelp 时间: 2017-11-23 09:15
回复 2# yhcfsr
只能一次 删除一个位置字符串哦
我这里有两个字符串。。
要如何进一步修改- @echo off
- :start
- set str1=p
- set str2=注
- echo.
- for /f "delims=" %%a in ('dir /s /b') do (
- if "%%~nxa" neq "%~nx0" (
- set "file=%%a"
- set "name=%%~na"
- set "extension=%%~xa"
- call set "name=%%name:%str1%=%%"
- setlocal enabledelayedexpansion
- ren "!file!" "!name!!extension!" 2>nul
- endlocal
- )
- )
- pause
复制代码
作者: zhanglei1371 时间: 2017-11-23 09:26
这种问题随便找个支持正则命名的软件就搞定了,没有必要再去写代码
作者: yhcfsr 时间: 2017-11-23 11:13
本帖最后由 yhcfsr 于 2017-11-23 14:37 编辑
回复 3# bathelp - @echo off
- set str1=P
- set str2=注
- for /f "delims=" %%a in ('dir /s /b') do (
- if "%%~nxa" neq "%~nx0" (
- set "file=%%a"
- set "name=%%~na"
- set "extension=%%~xa"
- CALL set "name=%%name:%str1%=%%"
- CALL set "name=%%name:%str2%=%%"
- setlocal enabledelayedexpansion
- ren "!file!" "!name!!extension!" 2>nul
- endlocal
- )
- )
复制代码
用是可以用,不过在代码中使用汉字总有些问题,比如窗口要好几秒才能关闭,批处理文档格式要另存为ANSI。
作者: bathelp 时间: 2017-11-23 18:54
本帖最后由 bathelp 于 2017-11-23 19:49 编辑
回复 5# yhcfsr
非常感谢。。代码可以使用。已保存为ASSCI形式。。。
我还要删除 备份*.txt 这类 文本文件。
这个代码 如何加呢?
因为现在的代码是对 根目录下所有的.txt处理的
作者: yhcfsr 时间: 2017-11-23 20:32
本帖最后由 yhcfsr 于 2017-11-23 20:35 编辑
哦,看错,这个只是对批处理所在目录及子目录下所有TXT删除你指定的字符
至于你说的删除备份,说明太简单,不清楚你的具体意图,不好写- @echo off
- set str1=P
- set str2=注
- for /f "delims=" %%a in ('dir /a:-d /s /b') do (
- if "%%~nxa" neq "%~nx0" (
- set "file=%%a"
- set "name=%%~na"
- set "extension=%%~xa"
- CALL set "name=%%name:%str1%=%%"
- CALL set "name=%%name:%str2%=%%"
- setlocal enabledelayedexpansion
- ren "!file!" "!name!!extension!" 2>nul
- endlocal
- )
- )
- exit
复制代码
回复 6# bathelp
作者: bathelp 时间: 2017-11-23 21:14
回复 7# yhcfsr
老师好,
我的意思,文件名为 备份0002.txt,备份171123.txt 这类的文本文件都一次性删除。 即备份*.txt 的 文本文件都删除
作者: yhcfsr 时间: 2017-11-23 22:33
本帖最后由 yhcfsr 于 2017-11-23 22:55 编辑
- @echo off
-
- set str1=P
- set str2=注
- for /f "delims=" %%a in ('dir /a:-d /s /b') do (
- if "%%~nxa" neq "%~nx0" (
- set "file=%%a"
- set "name=%%~na"
- set "extension=%%~xa"
- CALL set "name=%%name:%str1%=%%"
- CALL set "name=%%name:%str2%=%%"
- setlocal enabledelayedexpansion
- ren "!file!" "!name!!extension!" 2>nul
- endlocal
- )
- )
- for /f %%i in ('dir /a-d /s /b *备份*.txt') do del %%i
- exit
复制代码
其实就在最后加一句,记得有这样有汉字的要另存ANSI编码
这个脚本可以修改当前目录以及子目录的相关文件
作者: bathelp 时间: 2017-11-24 08:39
回复 9# yhcfsr
好的 谢谢老师 。我测试一下。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |