我想使用前缀为“g_x_”的命令提示符重命名文件。原始文件名的结构是:
000_1565.7k
我试过了:
ren *.7k g_x_*.7k
该代码会将文件重命名为“g_x_1565.7k”,但我确实需要将文件命名为“g_x_000_1565.7k”
关于为什么代码会删除原始文件名的一部分的任何想法?
谢谢,
DH
我想使用前缀为“g_x_”的命令提示符重命名文件。原始文件名的结构是:
000_1565.7k
我试过了:
ren *.7k g_x_*.7k
该代码会将文件重命名为“g_x_1565.7k”,但我确实需要将文件命名为“g_x_000_1565.7k”
关于为什么代码会删除原始文件名的一部分的任何想法?
谢谢,
DH
将每个文件的文件名存储在一个变量中,并在其前面加上 'g_x_' + 变量名。
如果所有文件都以 000_ * 开头,则在命令行上使用以下命令:
FOR %? IN (000_*.7k) DO ren %? g_x_%?
在批处理文件中,使用:
FOR %%? IN (000_*.7k) DO ren %? g_x_%%?
@ECHO OFF
SETLOCAL
FOR /f "delims=" %%a IN (
'dir /b /a-d *_*.7k ^|findstr /v /b /l "g_x_" '
) DO (
REN "%%a" "g_x_%%a"
)
GOTO :EOF
dir
查找匹配的文件名,*_*.7k
并将其通过管道传输到 a FINDSTR
,它只允许通过那些不匹配 ( )开头 ( /v
) 的文字 ( /l
) 字符串的名称。管道之前的插入符号 ( ) 需要告诉 CMD,管道是要由 执行的命令的一部分,而不是."g_x_"
/b
^
for
dir
然后将生成的文件名分配给%%a
、 前置和重命名
这种方法首先列出现有文件名,然后处理该列表。如果尝试就地重命名,则文件 aaa_bbb.7k 可能会重命名为 g_x_aaa_bbb.7k,然后再重命名为 g_x_g_x_aaa_bbb.7k...
这是@PeterWright 解决方案的修改版本,但如果您需要,它也允许您添加开关以处理子目录/s
。DIR
就目前而言,它只会将重命名命令回显到屏幕上 -echo
如果您喜欢在屏幕上看到的内容,请删除以启用重命名。
@ECHO OFF
FOR /f "delims=" %%a IN (' dir /b /a-d *_*.7k ') DO (
echo REN "%%a" "g_x_%%~nxa"
)
pause