Войти

Показать полную графическую версию : [решено] Переименовать файлы в папке


zion87
09-02-2012, 15:13
Где то раньше видел тему там что то похожее про файлы архива ни как немогу найти
вообщем в папке 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

это не работает ...

Iska
09-02-2012, 17:46
@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

mariolast
04-01-2020, 19:26
Похожая задача.
Нужно в папке и подпапках позаменять все файлы пустышками с таким же названием, как у оригинала.
Использую такой скрипт
@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

megaloman
04-01-2020, 19:58
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@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=*"

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

Попробуйте так:
@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 ==========================================================================

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




© OSzone.net 2001-2012