1

你能帮我解决我的问题吗?我需要重命名目录中的一些文件,并且必须在 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 ???
)
4

2 回答 2

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

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

用 a 读取每一行,将分隔符FOR /F之前的部分分配给(token 1) 并将分隔符之后的行的其余部分 (token "*") 分配给下一个元变量 (%%g)_%%f

然后做你的重命名 - 我刚刚echo编辑它

于 2013-10-15T06:00:52.053 回答
1

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

编辑以删除不需要的回声

for %%f in (*_*.sql) do for /f "tokens=1,* delims=_" %%g in ("%%~f") do echo ren "%%~f" "%%~h"
于 2013-10-15T05:57:03.973 回答