Войти

Показать полную графическую версию : Написать батник


SHADOWemp
18-06-2019, 15:51
Есть такая задача.

Есть папка 777 в ней 10 папок, в каждой папке разное количество файлов .CR2. - нужно что бы закидываешь батник в папку 777 - запускаешь его и он скопировал все файлы .CR2 из всех папок и положил их в папку на рабочий стол - назовем ее WORK.

Но некоторые файлы имеют имя IMG0001_1.CR2 , мне нужно что бы батник убирал в этих файлах _1.CR2 и оставлял просто имя IMG0001.CR2. Не селен в батниках, но очень нужно для работы. Если переименование не получается, то остановимся на копировании из всех папок папки 777

Elven
18-06-2019, 16:10
самый простой вариант (http://forum.oszone.net/thread-338035.html)
Ну а с переименованием TC тоже справляется на раз: Ctrl+M

SHADOWemp
18-06-2019, 16:40
Спасибо огромное Elven но Тотал не вариант. По многим причинам(объяснять не буду) Просто работа с диким количеством папок и файлов, и каждый раз заходить и юзать ТС гемор.

SHADOWemp
18-06-2019, 17:05
Написал вот такой батник

setlocal enabledelayedexpansion
for /R %%i in (*) do (
set ss=%%~nxi
if /i! ss:~-6!==_1.CR2 ren %%i! ss:~,-6!.cr2
copy %%i %path_on%
)

Но не работает.

mwz
18-06-2019, 20:24
Просто работа с диким количеством папок и файлов, и каждый раз заходить и юзать ТС гемор. »

TotalCmd: Ctrl+B после входа в 777.

Но не работает. »

Как минимум — у вас переменная %path_on% не определена.

alpap
19-06-2019, 09:30
нужно что бы закидываешь батник в папку »
вероятно удобнее чтобы: Закидываешь папку с файлами на батник


@echo off
set "m=IMG*_*.CR2"

for /f "tokens=1* delims=_" %%a in ('dir /a-d/b/s "%~1\%m%"') do echo f|xcopy /iy "%%a_%%b" "%UserProfile%\Desktop\%~n1\%%~nxa%%~xb" >nul 2>&1

pause
exit

Но учтите такой момент. В силу вашего условия
убирал в этих файлах _1 »
может оказаться так:
IMG0001_1.CR2
IMG0001_2.CR2
IMG0001_111.CR2
как видите, оставшаяся часть имени идентичная и в моем коде перезапишется в конечном таком итоге последним таким файлом иначе надо указать как поступить в случае такой проблемы. Ведь неспроста именно такое именование файлов и было изначально или именно к примерно такому мы и придем, решая проблему сохранения с исключением перезаписи.

SHADOWemp
19-06-2019, 09:53
Код: Выделить весь код

@echo off
set "m=IMG*_*.CR2"

for /f "tokens=1* delims=_" %%a in ('dir /a-d/b/s "%~1\%m%"') do echo f|xcopy /iy "%%a_%%b" "%UserProfile%\Desktop\%~n1\%%~nxa%%~xb" >nul 2>&1

pause
exit

Но учтите такой момент. В силу вашего условия

Огромное спасибо!




© OSzone.net 2001-2012