0

我想使用前缀为“g_x_”的命令提示符重命名文件。原始文件名的结构是:

000_1565.7k

我试过了:

ren *.7k g_x_*.7k

该代码会将文件重命名为“g_x_1565.7k”,但我确实需要将文件命名为“g_x_000_1565.7k”

关于为什么代码会删除原始文件名的一部分的任何想法?

谢谢,

DH

4

3 回答 3

0

将每个文件的文件名存储在一个变量中,并在其前面加上 'g_x_' + 变量名。

如果所有文件都以 000_ * 开头,则在命令行上使用以下命令:

FOR %? IN (000_*.7k) DO ren %? g_x_%?

在批处理文件中,使用:

FOR %%? IN (000_*.7k) DO ren %? g_x_%%?

于 2013-10-21T22:54:10.883 回答
0
@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^fordir

然后将生成的文件名分配给%%a、 前置和重命名

这种方法首先列出现有文件名,然后处理该列表。如果尝试就地重命名,则文件 aaa_bbb.7k 可能会重命名为 g_x_aaa_bbb.7k,然后再重命名为 g_x_g_x_aaa_bbb.7k...

于 2013-10-22T01:01:59.507 回答
0

这是@PeterWright 解决方案的修改版本,但如果您需要,它也允许您添加开关以处理子目录/sDIR

就目前而言,它只会将重命名命令回显到屏幕上 -echo如果您喜欢在屏幕上看到的内容,请删除以启用重命名。

@ECHO OFF
FOR /f "delims=" %%a IN (' dir /b /a-d *_*.7k ') DO (
 echo REN "%%a" "g_x_%%~nxa"   
)
pause
于 2013-10-22T04:57:42.613 回答