Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименовать файлы в папке

Ответить
Настройки темы
CMD/BAT - [решено] Переименовать файлы в папке

Аватара для zion87

Старожил


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

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


Где то раньше видел тему там что то похожее про файлы архива ни как немогу найти
вообщем в папке remont есть куча фотографий с расширением .jpg вот надо все их переименовать в image1.jpg, image2.jpg и так далее...

Код: Выделить весь код
@echo off
set s=1
:0
for /f "delims=*" %%I in ('dir /b /s "remont\ima*.jpg"') do ren "%%I" "image%s%.jpg"  && set /a s=%s%+1
)
goto:eof
это не работает ...

Отправлено: 15:13, 09-02-2012

 

Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set /a lCount = 0

for /f "delims=*" %%i in ('dir /b /s "remont\*.jpg"') do (
	set /a lCount += 1
	ren "%%i" "image!lCount!%%~xi"
)

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

Отправлено: 17:46, 09-02-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для mariolast

Ветеран


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

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


Похожая задача.
Нужно в папке и подпапках позаменять все файлы пустышками с таким же названием, как у оригинала.
Использую такой скрипт
@ECHO OFF
SETLOCAL EnableExtensions EnableDelayedExpansion

SET DirName="%~dp0test"
IF EXIST 1.txt DEL 1.txt
FOR /F "DELIMS=" %%B IN ('DIR !DirName! /B /S /A-D') DO (
SET /A N+=1
copy "%~dp0file_from.jpg" %%B /Y
)

Работает, но если в пути файла есть спецсимволы (пробел например), то такая папка игнорируется.
Что можно поправить, чтобы работало как надо?

Снимается вопрос
copy "%~dp0file_from.jpg" "%%B" /Y

Отправлено: 19:26, 04-01-2020 | #3


Ветеран


Contributor


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

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


mariolast,
Если это не злокозненное злодейство
Код: Выделить весь код
@Echo Off
	Set "FileIn=Z:\Test\*.*"
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%FileIn%" /S /B /A:-D`) Do >"%%f" CD.
Exit /B
А неувядающий :) скрипт Iska столетней давности я бы переписал в виде
Код: Выделить весь код
@Echo Off
	Set "BoxIn=remont"
	Set "OldName=ima*"
	Set "Ext=jpg"
	Set "NewName=image"
	
	Set /A i=0
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%OldName%.%Ext%" /B /A:-D`) Do If /I "%%~xf"==".%Ext%" Ren "%BoxIn%\%%f" "%%~nxf.~tmp"
	FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%OldName%.%Ext%.~tmp" /B /A:-D`) Do (
		Set /A i+=1
		Call Ren "%BoxIn%\%%f" "%NewName%%%i%%.%Ext%"
	)
Exit /B
Возможно, надо вместо ima*, как в вопросе и как сделал я в приведенном коде, надо написать
Set "OldName=*"

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


Последний раз редактировалось megaloman, 04-01-2020 в 20:38.

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

Отправлено: 19:58, 04-01-2020 | #4


Ветеран


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

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


Цитата mariolast:
Похожая задача. Нужно в папке и подпапках позаменять все файлы пустышками с таким же названием, как у оригинала. »
Не «похожая». Совсем.

Попробуйте так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~1

call :GetTemporaryName

if defined sSourceFolder (
	if exist "%sSourceFolder%\." (
		md "%TemporaryName%"
		>nul robocopy.exe /create /e /move "%sSourceFolder%" "%TemporaryName%" "*.*"
		>nul robocopy.exe /create /e "%TemporaryName%" "%sSourceFolder%" "*.*"
		rd /s /q "%TemporaryName%"
	) else (
		echo Can't find source folder [%sSourceFolder%].
		exit /b 2
	)
) else (
	echo Usage: %~nx0 ^<Source folder^>
	exit /b 1
)

endlocal
exit /b 0
rem ==========================================================================

rem ==========================================================================
rem Функция GetTemporaryName()
rem 
rem Серый форум / CMD/BAT: генерация пути для временного файла или папки
rem (http://forum.script-coding.com/viewtopic.php?id=6259)
rem ==========================================================================
:GetTemporaryName
	setlocal enableextensions enabledelayedexpansion

:NextName
	set sTempName=%temp%\temp%random%.tmp
	
	if exist "%sTempName%" goto :NextName
	
	set sProcName=%~0
	
	endlocal & set %sProcName:~4%=%sTempName%
	exit /b 0
rem ==========================================================================

Путь к целевому каталогу задаётся параметром пакетного файла (также можно просто перетянуть целевую папку на пакетный файл в Проводнике).
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:11, 05-01-2020 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Переименовать файлы в папке

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Нужно найти все файлы *.log в папке dir и подпапках и заменить на файлы нулевой длины dclxvi Скриптовые языки администрирования Windows 4 04-07-2012 21:28
Переименовать файлы по маске и времени создания porokh AutoIt 1 18-08-2011 11:13
Разное - Проблема: не могу переименовать папки и файлы ledibri Microsoft Windows Vista 7 09-12-2010 15:33
Интерфейс - Переименовать файлы при совпадении Папуас Скриптовые языки администрирования Windows 2 19-10-2010 23:56
Как переименовать системные файлы Centrinar AutoIt 13 11-07-2010 21:54




 
Переход