Как заменить все пробелы символами подчеркивания во всех именах файлов в папке?
Я пытаюсь переименовать все файлы в папке (все файлы .exe). Я хочу заменить все пробелы подчеркиванием, например, qwe qwe qwe asd.exe
на qwe_qwe_qwe_asd.exe
.
Мне нужно сделать это с помощью командной строки. Я перепробовал множество возможных решений, которые нашел в Интернете и даже на этом сайте, но не могу заставить его работать.
Мне также нужно сделать это в "одной строке"/"одной команде", но я приму все рабочие ответы.
Ответы
Ответ 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 остается тем же, а инструкции остаются теми же.