PDA

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


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

Foreigner
08-01-2014, 18:19
@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
А где параметр указать?

Foreigner
08-01-2014, 20:10
А где параметр указать? »
O.o Ладно, укажи в самом батнике:

@echo off
setlocal

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

....

Slava91
08-01-2014, 23:47
переименовывает и это хорошо. Но не выводит список и количество переименованных файлов. И как реализовать выбор папки через параметр если не сложно поясните для развития.

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

Iska
09-01-2014, 06:05
И как реализовать выбор папки через параметр если не сложно поясните для развития. »
Например, так: CMD/BAT: использование стандартных GUI-диалогов выбора папки и файла (http://forum.script-coding.com/viewtopic.php?id=4514).

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

Slava91
12-01-2014, 15:56
добавил 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
Не проверялось:
@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
где указывается параметр?
куда необходимо мне вставить этот код?

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

Iska
12-01-2014, 17:00
где указывается параметр? »
Там нет никакого параметра, поскольку:
как реализовать выбор папки »
Например, так: CMD/BAT: использование стандартных GUI-диалогов выбора папки и файла. »
как мне добавить данный код в батник чтобы все заработало? »
Не проверялось: »

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

Slava91
12-01-2014, 19:06
Пишет что режим вывода команд echo отключен и не выводит количество переименованных файлов

Iska
12-01-2014, 19:49
Замените «echo %n%» на «echo !n!».

Slava91
17-01-2014, 22:50
Проблема решена всем огромное спасибо!!!
Замечательный bat'ник вышел




© OSzone.net 2001-2012