[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

请问如何通过批处理批量替换掉(即删除)文件名中的.和空格(可能是半角或全角),不修改后缀。

回复 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. )
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

回复 2# Batcher


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

TOP

回复 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. }
复制代码
1

评分人数

TOP

回复 3# gavincar


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

如果仍有问题,请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

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

TOP

回复 6# gavincar


    改成*.*之后请注意把这个bat脚本自身排除掉,别把脚本自己给处理了
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 7# Batcher


    正常处理应该不会影响 到bat文件,但如果要考虑排除它,可能还要加几行代码才行。

TOP

本帖最后由 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.在循环内通过判断语句来排除
1

评分人数

TOP

返回列表