Search code examples
windowsbatch-filerenaming

How to remove spaces from file names (in bulk)


How to remove spaces (not replace with underscores) from several thousand files in bulk in Windows? Can I do this from the DOS command?

Currently:

file one.mp3
file two.mp3

All files need to become:

fileone.mp3
filetwo.mp3

Solution

  • Here is a script that can efficiently bulk rename files, stripping all spaces from the name.

    :renameNoSpace  [/R]  [FolderPath]
    @echo off
    setlocal disableDelayedExpansion
    if /i "%~1"=="/R" (
      set "forOption=%~1 %2"
      set "inPath="
    ) else (
      set "forOption="
      if "%~1" neq "" (set "inPath=%~1\") else set "inPath="
    )
    for %forOption% %%F in ("%inPath%* *") do (
      if /i "%~f0" neq "%%~fF" (
        set "folder=%%~dpF"
        set "file=%%~nxF"
        setlocal enableDelayedExpansion
        echo ren "!folder!!file!" "!file: =!"
        ren "!folder!!file!" "!file: =!"
        endlocal
      )
    )
    

    Assume the script is called renameNoSpace.bat

    renameNoSpace : (no arguments) Renames files in the current directory

    renameNoSpace /R : Renames files in the folder tree rooted at the current directory

    renameNoSpace myFolder : Renames files in the "myFolder" directory found in the current directory.

    renameNoSpace "c:\my folder\" : Renames files in the specified path. Quotes are used because path contains a space.

    renameNoSpace /R c:\ : Renames all files on the C: drive.