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

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

Ветеран


Contributor


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

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


Iska,
Сухов: Лучше, конечно, помучиться. (Белое солнце пустыни)
Вот работает:
Код: Выделить весь код
@Echo Off
cls
For %%f In ("Z:\Box_In\sound.mp3") Do (
	FOR /L %%N IN (1,1,1000) DO If Not Exist "%%~dpnf%%N%%~xf" (  
		Ren %%f "%%~nf%%N%%~xf" ||Echo Error with Ren %%f "%%~nf%%N%%~xf"
		Exit /B
))
В чем мучения: Не понимаю, как работает цикл FOR /L %%N. Если поставить очень большой его предел, получим, несмотря на то, что
If отработал,
Exit /B вроде бы должен прекратить выполнение,
но цикл продолжает как-то крутиться и время выполнения скрипта тем больше, чем больше предел.
Еще медный грош, ИМХО, так удобнее
Код: Выделить весь код
@Echo Off
	Call :MyRen "Z:\Box_In\sound.mp3"
Exit /B

:MyRen
SetLocal
	Set /A N=0
	:Begin
		Set /A N+=1
		If Exist "%~dpn1%N%%~x1" GoTo :Begin
		Ren %1 "%~n1%N%%~x1" ||Echo Error with Ren %1 "%~n1%N%%~x1"
EndLocal
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 24-12-2020 в 10:14.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:49, 24-12-2020 | #6