Компьютерный форум 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=275399)

Slava91 08-01-2014 16:39 2284919

переименование файлов
 
Добрый день!!!
Необходимо реализовать переименование всех файлов с расширением jpg в файлы с расширением jpeg, находящихся в папке, указанной пользователем. Вывести на экран список переименованных файлов и их общее количество.

Foreigner 08-01-2014 18:19 2284985

Код:

@echo off
setlocal

pushd %1 || goto:eof

for /f "tokens=*" %%i in ('dir /b *.jpg') do (

        set /a n+=1
        ren "%%i" "%%~ni.jpeg"
        echo %%~ni

)

echo ---
echo %n%

popd

Путь к папке задается параметром к батнику.

Slava91 08-01-2014 19:06 2285013

А где параметр указать?

Foreigner 08-01-2014 20:10 2285037

Цитата:

Цитата Slava91
А где параметр указать? »

O.o Ладно, укажи в самом батнике:
Код:

@echo off
setlocal

set "folder=D:\Pictures\The Last Friday"
pushd "%folder%" || goto:eof

....


Slava91 08-01-2014 23:47 2285140

переименовывает и это хорошо. Но не выводит список и количество переименованных файлов. И как реализовать выбор папки через параметр если не сложно поясните для развития.

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

Iska 09-01-2014 06:05 2285239

Цитата:

Цитата Slava91
И как реализовать выбор папки через параметр если не сложно поясните для развития. »

Например, так: CMD/BAT: использование стандартных GUI-диалогов выбора папки и файла.

Цитата:

Цитата Slava91
в смысле список то он выводит но закрывает сразу после выполнения нужно сделать так что бы он попросил действия пользователя перед закрытием »

Добавьте «pause» в пакетный файл, если Вы вызываете его непосредственно из-под Проводника.

Slava91 12-01-2014 15:56 2287576

добавил pause алгоритм работает единственное никак не пойму как мне добавить данный код в батник чтобы все заработало?
@echo off
setlocal

for /f "tokens=2 delims=:" %%i in ('chcp') do (
set sPrevCP=%%i
chcp 1251 >nul
)

for /f "usebackq delims=" %%i in (
`@"%systemroot%\system32\mshta.exe" "javascript:var objShellApp = new ActiveXObject('Shell.Application');var Folder = objShellApp.BrowseForFolder(0, 'SELECT FOLDER',1, '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}');try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Folder.Self.Path)};catch (e){};close();" ^
1^|more`
) do set sFolderName=%%i

chcp %sPrevCP% >nul

if defined sFolderName (
echo Выбрана папка: [%sFolderName%].
) else (
echo Папка не была выбрана.
)

endlocal
exit /b 0

Iska 12-01-2014 16:08 2287586

Не проверялось:
читать дальше »
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "tokens=2 delims=:" %%i in ('chcp') do (
        set sPrevCP=%%i
        chcp 1251 >nul
)

for /f "usebackq delims=" %%i in (
        `@"%systemroot%\system32\mshta.exe" "javascript:var objShellApp = new ActiveXObject('Shell.Application');var Folder = objShellApp.BrowseForFolder(0, 'SELECT FOLDER',1, '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}');try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Folder.Self.Path)};catch (e){};close();" ^
        1^|more`
) do set sFolderName=%%i

chcp %sPrevCP% >nul

if defined sFolderName (
        pushd "%sFolderName%" || goto:eof
       
        for /f "tokens=*" %%i in ('dir /b *.jpg') do (
       
                set /a n+=1
                ren "%%i" "%%~ni.jpeg"
                echo %%~ni
        )
       
        echo ---
        echo %n%
       
        popd
) else (
        echo Папка не была выбрана.
)

endlocal
exit /b 0


Slava91 12-01-2014 16:23 2287599

где указывается параметр?
куда необходимо мне вставить этот код?

скажем так этим я никогда не занимался, но тут встала задача. Поэтому понимание у меня начальный уровень.

Iska 12-01-2014 17:00 2287637

Цитата:

Цитата Slava91
где указывается параметр? »

Там нет никакого параметра, поскольку:
читать дальше »
Цитата:

Цитата Slava91
как реализовать выбор папки »

Цитата:

Цитата Iska
Например, так: CMD/BAT: использование стандартных GUI-диалогов выбора папки и файла. »

Цитата:

Цитата Slava91
как мне добавить данный код в батник чтобы все заработало? »

Цитата:

Цитата Iska
Не проверялось: »



Цитата:

Цитата Slava91
куда необходимо мне вставить этот код? »

Скопировать приведённый код. Создать файл с расширением «.cmd». Вставить скопированное в этот файл. Сохранить файл в кодировке OEM/866. Пользоваться.

Slava91 12-01-2014 19:06 2287726

Пишет что режим вывода команд echo отключен и не выводит количество переименованных файлов

Iska 12-01-2014 19:49 2287753

Замените «echo %n%» на «echo !n!».

Slava91 17-01-2014 22:50 2291210

Проблема решена всем огромное спасибо!!!
Замечательный bat'ник вышел


Время: 19:26.

Время: 19:26.
© OSzone.net 2001-