2015-12-19 8 views
1

Могу ли я переименовать все файлы в папку с помощью пакетного файла Я попытался это, но он не работаетпереименовать все файлы в папке с командным файлом

for %%a in (*.*) do ren sdel%random%.sdel %%a 

и я также судимое

ren *.????? sdel%random%.sdel 

Не работайте, что я делаю неправильно?

+0

Выглядит так же, как вопрос, который вы задали на допицах, и я сказал вам дважды, что вы переименовали назад. – Squashman

+0

Если вы в порядке с C++, я могу это сделать. Это тривиально. – CroCo

ответ

0

Попробуйте это:

@echo off 
setlocal EnableDelayedExpansion 
for %%a in (*.*) do (
if not "%~nx0"=="%%a" ren "%%a" "sdel!random!.sdel" 
) 

Within для цикла, вы должны использовать EnableDelayedExpansion и использовать! вместо% для переменных. Обратите внимание, что я также добавил проверку if, чтобы вы не переименовали сам пакетный файл. Если вы этого не сделаете, он переименует пакетный файл, а затем не сможет найти себя, а не переименовать другие файлы.

+0

Спасибо Dennis, но если имя файла содержит пробел, код не изменяется, есть ли способ обойти это? – ccmd

+2

, если путь может содержать пробелы, помещать кавычки вокруг него (или быть последовательными и помещать их вокруг любого пути или имени файла): 'ren" %% ~ a "" sdel! Random! .sdel "' – Stephan

+0

@Stephan прав, отредактирован –

Смежные вопросы