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

Вова.Неневолин@vk 18-08-2019 08:38 2884535

Переименовать файлы и поменять формат файлов
 
Ребята, привет всем, помогите пожалуйста.
Есть папка, в ней находятся еще 30 папок, в этих папках примерно по 200-250 файлов (VP-BAI_20190731_224209.tsc)
Необходимо что бы он поменял название, взяв из старого названия в такой формат и добавил нумерацию: VP-BAI_31.07.19.1.txt
Есть код, но он не менять формат файла, и нумерацию делает в скобках:
@echo off
set "d0=C:\Users\Dovolin\Desktop\azaza"

for /f "delims=" %%d in ('dir /ad/b/s "%d0%"') do (
pushd "%%d"
for /f "tokens=1,2* delims=_" %%a in ('dir /a-d/b') do set /a n+=1& set "odt=%%b"& call :rn "%%a_%%b_%%c" "%%a" "%%n%%" "%%~xc"
popd
)
pause& exit

:rn
set "d=%odt:~6,2%"&
set "M=%odt:~4,2%"&
set "yy=%odt:~2,2%"
ren "%~1." "%~2_%d%.%M%.%yy%(%~3)%~4"
exit /b

Очень прошу, выручайте братцы!!!!!!!

megaloman 18-08-2019 11:11 2884553

Если тупо сплошная нумерация без учета сортировки по датам и подпапкам
Код:

@Echo Off
cls
        Set "BoxIn=Z:\Box_In"
        Set "Mask=VP-BAI_20*_*.tsc"
        Set "NewExt=txt"

        Set /A N=0
        FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /S`) DO (
                FOR /F "tokens=1,2 delims=_" %%c IN ("%%~nf") DO Call :MyRen "%%f" "%%c" "%%d"
        )
Exit /B

:MyRen
        Set /A N+=1
        Set "dd=%~3"
        Ren %1 "%~2_%dd:~6,2%.%dd:~4,2%.%dd:~0,4%.%N%.%NewExt%"
Exit /B


megaloman 18-08-2019 11:51 2884556

Если переименовывать так, чтобы файлы нумеровались от более старой даты к более новой сплошняком по всем папкам
Код:

@Echo Off
        Set "BoxIn=Z:\Box_In"
        Set "Mask=VP-BAI_20*_*.tsc"
        Set "NewExt=txt"

        FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D /S`) DO (
                FOR /F "tokens=1,2 delims=_" %%c IN ("%%~nf") DO Set "@@%%d=%%c_%%d_*%%~xf=%%c=%%d"
        )
       
        Set /A N=0
        FOR /F "usebackq tokens=2,3,4 delims==" %%a IN (`2^>nul Set "@@"`) DO (
                FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%%a" /B /A:-D /S`) DO (
                        Call :MyRen "%%f" "%%b" "%%c"
                )
        )
Exit /B
:MyRen
        Set /A N+=1
        Set "dd=%~3"
        Ren %1 "%~2_%dd:~6,2%.%dd:~4,2%.%dd:~0,4%.%N%.%NewExt%"
Exit /B


alpap 18-08-2019 18:34 2884619

Вова.Неневолин@vk,
Цитата:

Цитата Вова.Неневолин@vk
и нумерацию делает в скобках »

(мой код приведен в примере, потому и отвечаю)
на другом форуме в скобках вы именно и просили, сложно было попросить там переделать?
Код:

@echo off
set "d0=C:\Papka"
set "ext=txt"
 
for /f "delims=" %%d in ('dir /ad/b/s "%d0%"') do (
 pushd "%%d"
  for /f "tokens=1,2* delims=_" %%a in ('dir /a-d/b') do set /a n+=1& set "odt=%%b"& call :rn "%%a_%%b_%%c" "%%a" "%%n%%" "%ext%"
 popd
)
pause& exit
 
:rn
 set "d=%odt:~6,2%"& set "M=%odt:~4,2%"& set "yy=%odt:~2,2%"
 ren "%~1" "%~2_%d%.%M%.%yy%.%~3.%~4"
exit /b



Время: 02:50.

Время: 02:50.
© OSzone.net 2001-