2016-02-02 2 views
0

В пакетном файл я хотел бы переименовать начало всех файлов в одной папке, файлы в данный момент названы такойпереименования начала всех имен файлов в папке перед первым подчеркиванием

1_sometext 2_sometext . .. 467_sometext

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

я хотел бы, чтобы они появлялись как 001_sometext 002_som Etext 003_sometext ... 467_sometext

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

, как это могло быть сделано в пакетном файле?

ответ

0

Это переименовывать файлы, как вы хотите:

@echo off 
set YOUR_DIR=%1 
setlocal enabledelayedexpansion 
set temp_str=something 
for /f "tokens=*" %%L in ('dir /b %YOUR_DIR%') do (
     set INITIAL_NAME=%%L 
     for /f "tokens=1 delims=_" %%a in ("%%L") do (
      set INTEGER_PART=%%a 
      SET temp_str=!INTEGER_PART! 
     ) 

     call :GET_STR_LEN 
     if "!str_len!"=="1" (
      set PREFIX=00 
     ) else (
      if "!str_len!"=="2" (
       set PREFIX=0 
      ) else (
        set PREFIX= 
       ) 

      ) 


     pushd %YOUR_DIR% 
     echo The file is %%L 
     set NEW_NAME=!PREFIX!%%L 
     echo The new name is !NEW_NAME! 
     REN "%%L" "!NEW_NAME!" 
     popd 

    ) 

:GET_STR_LEN 
SET /a str_len=0 

:loop 
if defined temp_str (
SET temp_str=!temp_str:~1! 
SET /A str_len=str_len+1 
GOTO loop 
) 

exit /b 

Поместите это в пакетный файл под названием rename_files.bat и выполнить его как: rename_files «your_dir»

+0

Это отлично, спасибо! –

Смежные вопросы