重命名Windows批处理脚本中的文件

时间:2013-10-15 05:21:38

标签: windows batch-file cmd

你可以帮我解决我的问题。我需要重命名目录中的一些文件,并且必须在Windows批处理文件中执行此操作。 文件的格式为VXXXX__<some-name>,其中XXXX可以是任意数字。我需要将文件重命名为some-name,删除V9999__。我有以下但它对我不起作用

REM Get all files from directory
for %%f in (C:\data\\*.sql) do (
   echo %%~nf     
   how to split the filename and rename the file ???
)

2 个答案:

答案 0 :(得分:1)

使用for命令,给出分隔符和标记(子字符串)指示:第一个标记(%g)将是下划线左侧的文本,其余文本将放在%h(下一个)令牌)

已修改以删除不需要的回显

for %%f in (*_*.sql) do for /f "tokens=1,* delims=_" %%g in ("%%~f") do echo ren "%%~f" "%%~h"

答案 1 :(得分:1)

@ECHO OFF
SETLOCAL
for /f "tokens=1*delims=_" %%f in ('dir /b /a-d U:\data\*_*.sql') do (
   echo REN U:\data\%%f_%%g %%g
)
GOTO :EOF

首先,在dir / b *_*.sql, in / ad`匹配的文件目录(我已更改驱动器...)上执行(bare) format - name only, no headers and - 无目录名。

使用FOR /F读取每一行,将_分隔符之前的部分分配给%%f(标记1),将分隔符之后的剩余部分分配(标记“*”)到下一个元变量(%% g)

然后重命名 - 我只是echo编辑