Показать полную графическую версию : [решено] Переименовать файлы в папке
Где то раньше видел тему там что то похожее про файлы архива ни как немогу найти
вообщем в папке 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
это не работает ...
@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=*"
Похожая задача. Нужно в папке и подпапках позаменять все файлы пустышками с таким же названием, как у оригинала. »
Не «похожая». Совсем.
Попробуйте так:
@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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.