cmd窗口replace带下划线的空格

我试图重命名文件夹内的所有文件(所有的.exe文件)。 我想用下划线replace所有的空格,例如:“qwe qwe qwe asd.exe”到“qwe_qwe_qwe_asd.exe”。

我需要使用命令行来执行此操作。 我尝试了很多可能的解决scheme,我在互联网上甚至在这个网站上都find了,但是我无法完成它。

我也需要在“一行”/“一个命令”中做到这一点,但我会接受所有的工作答案。

谢谢!

一个班轮

cmd /e:on /v:on /c "for %f in ("* *.exe") do (set "n=%~nxf" & set "n=!n: =_!" & ren "%~ff" "!n!" )" 

产生一个cmd的实例,扩展和延迟扩展启用,并为每个名称空间的exe文件,用下划线替换空格,并用新名称重命名该文件

改编自这里:

https://stackoverflow.com/a/16129486/2000557

 @echo off Setlocal enabledelayedexpansion Set "Pattern= " Set "Replace=_" For %%a in (*.exe) Do ( Set "File=%%~a" Ren "%%a" "!File:%Pattern%=%Replace%!" ) Pause&Exit 

用上面的内容创建一个批处理文件( *.bat )。 将该批处理文件放置在具有所有.exe的文件夹中,并在运行时用空格替换下划线。

使用forfiles:

 forfiles /m *.exe /C "cmd /e:on /v:on /c set \"Phile=@file\" & if @ISDIR==FALSE ren @file !Phile: =_!" 

forfiles之后添加/s以递归子文件夹。

简单如:

 set filename=qwe qwe qwe asd.exe set filename=%filename: =_% 

设置数据=%日期:〜6,4%%日期:〜3,2 %%日期:〜0.2%_%时间:〜0.2%时间:〜3.2%时间:〜6, 2%设定数据=%数据:= 0%