Board logo

标题: [文本处理] 请教批处理如何把文件名中的空格替换成_ [打印本页]

作者: dengwenbin    时间: 2020-7-18 00:31     标题: 请教批处理如何把文件名中的空格替换成_

请教如何把文件名中的空格替换成_
文件太多了,一个一个修改太费时,有木有大神帮忙写一个bat文件
作者: newswan    时间: 2020-7-18 02:13

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

用for循环处理
作者: dengwenbin    时间: 2020-7-18 13:25

回复 2# newswan


    看不懂
作者: went    时间: 2020-7-18 14:23

也处理子文件夹
  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
复制代码

作者: Batcher    时间: 2020-7-18 14:27

回复 2# newswan


有单文件版的 sed 不需要安装其他东西
http://bcn.bathome.net/s/tool/index.html?key=sed
作者: dengwenbin    时间: 2020-7-18 22:34

回复 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
作者: newswan    时间: 2020-7-19 01:27

下载 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
作者: smss    时间: 2020-7-19 19:40

  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
复制代码

作者: newswan    时间: 2020-7-20 21:56

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




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