Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Переименовать файлы в папке (http://forum.oszone.net/showthread.php?t=227420)

zion87 09-02-2012 15:13 1854846

Переименовать файлы в папке
 
Где то раньше видел тему там что то похожее про файлы архива ни как немогу найти
вообщем в папке 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 1854947

Код:

@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 2903519

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

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=*"

Iska 05-01-2020 01:11 2903562

Цитата:

Цитата 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 ==========================================================================


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


Время: 17:04.

Время: 17:04.
© OSzone.net 2001-