我正在尝试重命名文件夹中的所有文件(所有.exe文件)。我想用下划线替换所有空格,例如qwe qwe qwe asd.exe
至qwe_qwe_qwe_asd.exe
。
我需要使用命令行执行此操作。我尝试了很多可能的解决方案,我在互联网上甚至在这个网站上找到了,但我无法让它发挥作用。
我还需要在“单行”/“一个命令”中执行此操作,但我会接受所有可行的答案。
答案 0 :(得分:45)
一个班轮
cmd /e:on /v:on /c "for %f in ("* *.exe") do (set "n=%~nxf" & set "n=!n: =_!" & ren "%~ff" "!n!" )"
生成一个cmd实例,启用扩展和延迟扩展,对于名称中带有空格的每个exe文件,用下划线替换空格并使用新名称重命名该文件
答案 1 :(得分:16)
改编自:
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文件夹的文件夹中,并在运行时将替换带下划线的空格。
答案 2 :(得分:11)
简单如下:
set filename=qwe qwe qwe asd.exe
set filename=%filename: =_%
答案 3 :(得分:6)
使用forfiles:
forfiles /m *.exe /C "cmd /e:on /v:on /c set \"Phile=@file\" & if @ISDIR==FALSE ren @file !Phile: =_!"
在/s
之后添加forfiles
以通过子文件夹进行递归。
答案 4 :(得分:3)
根据@Gray的回答,我已将其扩展为在所有子目录中递归替换文件名。
文件1: replace.bat
setlocal enabledelayedexpansion
set "pattern= "
set "replace=_"
for %%I in (*.ext) do (
set "file=%%~I"
ren "%%I" "!file:%pattern%=%replace%!"
)
文件2: recursive.bat
for /d /r . %%D in (*) do (
copy replace.bat "%%D\replace.bat"
cd "%%D"
replace.bat
del replace.bat
cd..
)
<强>文件强>
replace.bat
包含用space
underscore
的脚本
recursive.bat
包含在所有子目录中执行递归的脚本如何使用?
replace.bat
和recursive.bat
保存在同一目录中。.ext
替换为所需的文件扩展名,以匹配.mp4
中的replace.bat
}。recursive.bat
文件。答案 5 :(得分:0)
set data =%date:~6,4 %% date:~3,2 %% date:~0.2%_%time:~0,2 %% time:~3,2 %% time: 〜6.2% set data =%data:= 0%
答案 6 :(得分:0)
将以下2条命令保存在.bat
文件中。从存储文件的文件夹开始,它将在所有文件和文件夹中用" "
替换"_"
。
forfiles /s /m *.* /C "cmd /e:on /v:on /c set \"Phile=@file\" & if @ISDIR==FALSE ren @file !Phile: =_!"
forfiles /s /C "cmd /e:on /v:on /c set \"Phile=@file\" & if @ISDIR==TRUE ren @file !Phile: =_!"
注意:第一行对文件执行此操作,第二行对文件夹执行此操作。每行可以单独使用。
答案 7 :(得分:0)
轻微调整Hamza Rashid的答案。具体来说就是他的recursive.bat脚本。
recursive.bat
set orig=%cd%
for /d /r . %%D in (*) do (
copy replace.bat "%%D\replace.bat"
cd "%%D"
replace.bat
del replace.bat
cd %orig%
)
replace.bat保持不变,说明也保持不变。