Подтвердить что ты не робот

Как заменить все пробелы символами подчеркивания во всех именах файлов в папке?

Я пытаюсь переименовать все файлы в папке (все файлы .exe). Я хочу заменить все пробелы подчеркиванием, например, qwe qwe qwe asd.exe на qwe_qwe_qwe_asd.exe.

Мне нужно сделать это с помощью командной строки. Я перепробовал множество возможных решений, которые нашел в Интернете и даже на этом сайте, но не могу заставить его работать.

Мне также нужно сделать это в "одной строке"/"одной команде", но я приму все рабочие ответы.

4b9b3361

Ответ 1

Один вкладыш

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

Создайте экземпляр cmd с включенными расширениями и задержкой расширения, а для каждого файла exe с пробелами в имени замените пробелы символами подчеркивания и переименуйте файл с новым именем

Ответ 2

Адаптировано отсюда:

fooobar.com/questions/238624/...

@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, и он заменит пробелы символами подчеркивания при его запуске.

Ответ 3

Прост как:

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

Ответ 4

Использование файлов forfiles:

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

Добавьте /s после forfiles для повторной отправки через вложенные папки.

Ответ 5

Основываясь на ответе @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.

Ответ 6

set data =% date: ~ 6,4 %% date: ~ 3,2 %% дата: ~ 0,2% _% время: ~ 0,2 %% время: ~ 3,2 %% время: ~ 6,2% set data =% data: = 0%

Ответ 7

Сохраните следующие 2 команды в файле .bat. Он заменит " " на "_" во всех файлах и папках, рекурсивно, начиная с папки, в которой хранится файл.

forfiles /s /m *.* /C "cmd /e:on /v:on /c set \"[email protected]\" & if @ISDIR==FALSE ren @file !Phile: =_!"
forfiles /s /C "cmd /e:on /v:on /c set \"[email protected]\" & if @ISDIR==TRUE ren @file !Phile: =_!"

Примечание. Первая строка делает это для файлов, а вторая - для папок. Каждая строка может использоваться отдельно.

Ответ 8

Незначительная поправка к ответу Хамзы Рашид. В частности, его скрипт 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 остается тем же, а инструкции остаются теми же.