Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата mwz:
Маленькая погрешность: не переименовались файлы, имена которых содержат восклицательный знак. »
Это особенность работы пакетных файлов с включённым режимом отложенного раскрытия переменных окружения (впрочем, аналогичные неприятные «особенности» наличествуют у всех языков, поддерживающих подобные «препроцессорные макросы»).

Приведённый ранее код можно заменить, например, таким, используя двойное раскрытие переменных окружения по «call»:
Код: Выделить весь код
@echo off
setlocal enableextensions disabledelayedexpansion

set sSourceFolder=%~1
set sTemplate=00000

if defined sSourceFolder (
	if exist "%sSourceFolder%\." (
		for /f "usebackq delims=" %%i in (
			`dir /b /a:-d "%sSourceFolder%\*.*" 2^>nul`
		) do (
			call set sPredicate=%sTemplate%%%random%%
			call ren "%sSourceFolder%\%%~i" "%%sPredicate:~-5%%_%%~i"
		)
	) else (
		echo Can't find source folder [%sSourceFolder%].
		exit /b 2
	)
) else (
	echo Usage: %~nx0 ^<Source folder^>
	exit /b 1
)

endlocal
exit /b 0
Цитата mwz:
Vadikan, собственно, конкретную задачу можно понять из примеров: [достаточно] случайным образом пересортировать порядок следования файлов с неслучайными именами. »
Заранее это понять сложно. Тем паче, что глобальная задача опять-таки неясна: зачем надо менять порядок следования файлов?

Если для воспроизведения — так ведь практически все известные мне плееры имеют функцию «перемешивания» файлов в списке. Можно даже просто составить список .m3u из исходных файлов в произвольном порядке и «скормить» его плееру.
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:57, 28-08-2014 | #6