Показать полную графическую версию : [решено] переименование файлов
Добрый день!!!
Необходимо реализовать переименование всех файлов с расширением 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
Путь к папке задается параметром к батнику.
Foreigner
08-01-2014, 20:10
А где параметр указать? »
O.o Ладно, укажи в самом батнике:
@echo off
setlocal
set "folder=D:\Pictures\The Last Friday"
pushd "%folder%" || goto:eof
....
переименовывает и это хорошо. Но не выводит список и количество переименованных файлов. И как реализовать выбор папки через параметр если не сложно поясните для развития.
в смысле список то он выводит но закрывает сразу после выполнения нужно сделать так что бы он попросил действия пользователя перед закрытием
И как реализовать выбор папки через параметр если не сложно поясните для развития. »
Например, так: CMD/BAT: использование стандартных GUI-диалогов выбора папки и файла (http://forum.script-coding.com/viewtopic.php?id=4514).
в смысле список то он выводит но закрывает сразу после выполнения нужно сделать так что бы он попросил действия пользователя перед закрытием »
Добавьте «pause» в пакетный файл, если Вы вызываете его непосредственно из-под Проводника.
добавил 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
Не проверялось:
@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
где указывается параметр?
куда необходимо мне вставить этот код?
скажем так этим я никогда не занимался, но тут встала задача. Поэтому понимание у меня начальный уровень.
где указывается параметр? »
Там нет никакого параметра, поскольку:
как реализовать выбор папки »
Например, так: CMD/BAT: использование стандартных GUI-диалогов выбора папки и файла. »
как мне добавить данный код в батник чтобы все заработало? »
Не проверялось: »
куда необходимо мне вставить этот код? »
Скопировать приведённый код. Создать файл с расширением «.cmd». Вставить скопированное в этот файл. Сохранить файл в кодировке OEM/866. Пользоваться.
Пишет что режим вывода команд echo отключен и не выводит количество переименованных файлов
Замените «echo %n%» на «echo !n!».
Проблема решена всем огромное спасибо!!!
Замечательный bat'ник вышел
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.