如何在文件夹的所有文件名中用下划线替换所有空格?

时间:2013-12-26 21:06:53

标签: windows replace cmd

我正在尝试重命名文件夹中的所有文件(所有.exe文件)。我想用下划线替换所有空格,例如qwe qwe qwe asd.exeqwe_qwe_qwe_asd.exe

我需要使用命令行执行此操作。我尝试了很多可能的解决方案,我在互联网上甚至在这个网站上找到了,但我无法让它发挥作用。

我还需要在“单行”/“一个命令”中执行此操作,但我会接受所有可行的答案。

8 个答案:

答案 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.batrecursive.bat保存在同一目录中。
  • .ext替换为所需的文件扩展名,以匹配.mp4中的replace.bat}。
  • 双击(运行)ON 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保持不变,说明也保持不变。