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

[文本处理] 请教批处理如何把文件名中的空格替换成_

请教如何把文件名中的空格替换成_
文件太多了,一个一个修改太费时,有木有大神帮忙写一个bat文件

读错需求了,是改文件名,不是改文件,

TOP

  1. @Echo off&SetLocal EnableDelayedExpansion
  2. set /p x=要替换的文件名字符串(可替换空格):
  3. set /p y=替换后的文件名字符串(删除则回车):
  4. for /f "delims=" %%i in ('dir /s /b') do (set "f=%%~nxi"&set "f1=!f:%x%=%y%!"
  5. if not "%%i"==%0 if not "!f!"=="!f1!" if exist "!f1!" (echo 由于!f1!存在同名,!f! 文件名未改 )else ren "!f!" "!f1!"&echo "!f!"改名为"!f1!")
  6. pause
复制代码

TOP

下载 3 楼 的sed,放到 C:\windows\
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /r d:\path %%i in (*.txt) do (
  4. sed -r -e "s/ /_/g" %%i
  5. )
复制代码
放在 d:\path 里的 文本文件 会被处理
检查一下,如果输出正确,把 sed 这行语句改成下面的。
sed -r -e "s/ /_/g" -i %%i

TOP

回复 4# went


    你这个不行,我有了

@echo off&cd/d "%~dp0"
for %%i in ("* *")do if not "%%i"=="%~nx0" (
  set "q=%%i"
  call echo %%i  ==^> %%q: =_%%
  call ren "%%i" "%%q: =_%%")
pause

TOP

回复 2# newswan


有单文件版的 sed 不需要安装其他东西
http://bcn.bathome.net/s/tool/index.html?key=sed
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

也处理子文件夹
  1. @echo off
  2. set "key1= "
  3. set "key2=_"
  4. for /r %%i in ("* *") do (
  5. if not "%%~i"=="%~0" (
  6. echo %%i
  7. set "fileName=%%~ni"
  8. call set "fileName=%%fileName:%key1%=%key2%%%"
  9. call echo %%fileName%%%%~xi
  10. call rename "%%i" "%%fileName%%%%~xi" && echo success! || echo failed!
  11. echo ------------------------------------------
  12. )
  13. )
  14. pause&exit
复制代码

TOP

回复 2# newswan


    看不懂

TOP

sed 命令
sed -r -e "s/ /_/g" -i file.txt
sed 在windows下,要安装 msys2 或者 git 之类的。

用for循环处理

TOP

返回列表