你可以帮我解决我的问题。我需要重命名目录中的一些文件,并且必须在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 ???
)
答案 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
编辑