Board logo

标题: [文件操作] [已解决]BAT脚本如何批量替换文件名中的小数点和空格,不修改后缀。 [打印本页]

作者: gavincar    时间: 2022-3-14 20:20     标题: [已解决]BAT脚本如何批量替换文件名中的小数点和空格,不修改后缀。

本帖最后由 gavincar 于 2022-3-15 19:20 编辑

请问如何通过批处理批量替换掉(即删除)文件名中的.和空格(可能是半角或全角),不修改后缀。
作者: Batcher    时间: 2022-3-14 21:12

回复 1# gavincar
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  5.     echo 正在处理文件:%%i
  6.     set "NewName=%%~ni"
  7.     set "NewName=!NewName:.=!"
  8.     set "NewName=!NewName: =!"
  9.     REM 还需要删除哪个字符就照着上面的格式添加即可
  10.     ren "%%i" "!NewName!%%~xi"
  11. )
复制代码

作者: gavincar    时间: 2022-3-14 23:00

本帖最后由 gavincar 于 2022-3-14 23:04 编辑

回复 2# Batcher


   谢谢,非常感谢,我试运行了一下,发现文件名中的空格和点没被替换掉
我的操作如下:
将您的代码复制粘贴到新建记事本,保存后,直接修改为bat文件。
将需要改文件名的文件和bat文件放一起,运行bat后,文件名中的空格和小数点未被替换。
作者: 5i365    时间: 2022-3-14 23:46

回复 3# gavincar
.
存成ANSI编码格式的bat文件,放到txt所在文件夹执行
  1. #@&cls&powershell "gc '%~0'|out-string|iex"&pause&exit
  2. gci *.txt |
  3. ForEach {
  4. $name = $_.BaseName -replace '\s+' -replace '\.'
  5. $ext = $_.Extension
  6. ren $_.FullName "$name$ext" #-WhatIf
  7. }
复制代码

作者: Batcher    时间: 2022-3-15 08:28

回复 3# gavincar


请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ

如果仍有问题,请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: gavincar    时间: 2022-3-15 08:58

回复 5# Batcher
找到原因了,代码中
for /f "delims=" %%i in ('dir /b /a-d *.txt') do (

这里应该是针对文件夹中的txt文件的,而我之前的文件是jpg和pdf文件,通过按您刚才的方法测试,发现找不到文件,细读代码才发现。
如果针对文件夹下所有类型文件,是不是将*.txt直接改成*.*就可以了?
作者: Batcher    时间: 2022-3-15 09:55

回复 6# gavincar


    改成*.*之后请注意把这个bat脚本自身排除掉,别把脚本自己给处理了
作者: gavincar    时间: 2022-3-15 13:21

回复 7# Batcher


    正常处理应该不会影响 到bat文件,但如果要考虑排除它,可能还要加几行代码才行。
作者: qixiaobin0715    时间: 2022-3-16 12:27

本帖最后由 qixiaobin0715 于 2022-3-16 16:29 编辑

排除bat文件有以下思路:
1.搜索文件时,穷尽所有要处理的文件扩展名。如:for /f ... in ('dir /b /a-d *.pdf *.doc *.jpg...') do...
2.通过管道命令排除bat文件。for /f ... in ('dir /b /a-d ^|findstr /ve "\.bat"') do...
3.在循环内通过判断语句来排除




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