Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重命名Windows批处理脚本中的文件_Windows_Batch File_Cmd - Fatal编程技术网

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

重命名Windows批处理脚本中的文件,windows,batch-file,cmd,Windows,Batch File,Cmd,你能帮我解决我的问题吗。我需要重命名目录中的一些文件,并且必须在Windows批处理文件中重命名。 这些文件的格式为vxxx\uuxx,其中XXXX可以是任何数字。我需要将文件重命名为某个名称,以删除V9999\uuuu。我有以下几点,但它不适合我 REM Get all files from directory for %%f in (C:\data\\*.sql) do ( echo %%~nf how to split the filename and rename

你能帮我解决我的问题吗。我需要重命名目录中的一些文件,并且必须在Windows批处理文件中重命名。 这些文件的格式为
vxxx\uuxx
,其中
XXXX
可以是任何数字。我需要将文件重命名为某个名称,以删除
V9999\uuuu
。我有以下几点,但它不适合我

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

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

编辑以删除不需要的回音

for %%f in (*_*.sql) do for /f "tokens=1,* delims=_" %%g in ("%%~f") do echo ren "%%~f" "%%~h"
首先,在与
*.*.sql匹配的文件的目录(我已经更改了驱动器…)上执行
dir
,格式为
/b
(裸)格式-仅名称,无标题和
/ad`-无目录名

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


然后重新命名-我刚刚对它进行了
echo
ed

阅读这里的如何接受答案:
@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