在第一个下划线之前重命名文件夹中所有文件名的开头
Renaming start of all file names in folder before first underscore
在一个批处理文件中,我想重命名一个文件夹中所有文件的开头,目前的文件都是这样命名的
1_sometext
2_sometext
...
467_sometext
这导致了一个问题,我需要在目录上调用 dir 时以正确的顺序显示这些文件
我希望他们看起来像
001_sometext
002_sometext
003_sometext
...
467_sometext
这样当我需要它们时它们总是按顺序出现
这怎么能在批处理文件中完成?
这将根据需要重命名您的文件:
@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"
在一个批处理文件中,我想重命名一个文件夹中所有文件的开头,目前的文件都是这样命名的
1_sometext 2_sometext ... 467_sometext
这导致了一个问题,我需要在目录上调用 dir 时以正确的顺序显示这些文件
我希望他们看起来像 001_sometext 002_sometext 003_sometext ... 467_sometext
这样当我需要它们时它们总是按顺序出现
这怎么能在批处理文件中完成?
这将根据需要重命名您的文件:
@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"