标题: [文本处理] 请教批处理如何把文件名中的空格替换成_ [打印本页]
作者: 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
也处理子文件夹- @echo off
- set "key1= "
- set "key2=_"
- for /r %%i in ("* *") do (
- if not "%%~i"=="%~0" (
- echo %%i
- set "fileName=%%~ni"
- call set "fileName=%%fileName:%key1%=%key2%%%"
- call echo %%fileName%%%%~xi
- call rename "%%i" "%%fileName%%%%~xi" && echo success! || echo failed!
- echo ------------------------------------------
- )
- )
- 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\- @echo off
- setlocal EnableDelayedExpansion
-
- for /r d:\path %%i in (*.txt) do (
- sed -r -e "s/ /_/g" %%i
- )
复制代码
放在 d:\path 里的 文本文件 会被处理
检查一下,如果输出正确,把 sed 这行语句改成下面的。
sed -r -e "s/ /_/g" -i %%i
作者: smss 时间: 2020-7-19 19:40
- @Echo off&SetLocal EnableDelayedExpansion
- set /p x=要替换的文件名字符串(可替换空格):
- set /p y=替换后的文件名字符串(删除则回车):
- for /f "delims=" %%i in ('dir /s /b') do (set "f=%%~nxi"&set "f1=!f:%x%=%y%!"
- if not "%%i"==%0 if not "!f!"=="!f1!" if exist "!f1!" (echo 由于!f1!存在同名,!f! 文件名未改 )else ren "!f!" "!f1!"&echo "!f!"改名为"!f1!")
- pause
复制代码
作者: newswan 时间: 2020-7-20 21:56
读错需求了,是改文件名,不是改文件,
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |