如何更改bat文件中的输出文件名?

How to change the output file name in a bat file?

我正在尝试更改 bat 文件中的输出文件名 fOut,但到目前为止还没有成功。

我正在 Windows 7 上开发并将代码部署到 Windows 2003 服务器。

代码如下所示:

set fName=%1
set fExt=%fName:~-5,-1%

set fOut=%fName:~0,-5%_PAD%fName:~-5%   

fOut 示例:

abcdc2evv_PAD.dat

abcdefgh33ij_3737_PAD.dat 

如何更改 fOut 以获得以下文件名?

一个。在文件名开头添加FMT_:

FMT_abcdc2evv_PAD.dat

FMT_abcdefgh33ij_3737_PAD.dat

乙。在文件名开头添加FMT_,去掉.dat前的_PAD:

FMT_abcdc2evv.dat

FMT_abcdefgh33ij_3737.dat

附录: 只向 bat 文件传递​​一个参数:路径 + 文件名。

x.bat "C\test\xxx.dat"

bat文件中:

@echo ^-input file name = ^%1

set fName=%1
set fExt=%fName:~-5,-1%

set fOut==%fName:~0,-5%_PAD%fName:~-5%

如果你想删除 pad 只需将它从你的赋值语句中删除 你有:

set fOut=%fName:~0,-5%_PAD%fName:~-5%   

你想要:

set fOut=%fName:~0,-5%fName:~-5%

要添加FMT_只需在文件名开头添加即可:

set fOut=%FMT_%fName:~0,-5%_PAD%fName:~-5%

我不知道我是否遗漏了一些明显的东西——不清楚这个脚本的输入是什么。

但是之前添加FMT_应该只是改变的情况:

set fOut=%fName:~0,-5%_PAD%fName:~-5% 

至:

set fOut=FMT_%fName:~0,-5%_PAD%fName:~-5% 

或者如果您想将 FMT_ 版本放入另一个变量,则:

set bob=FMT_%fOut%

至于删除_PAD,你能不能只重复SET fOut行而不是_PAD?这似乎是最简单的方法。事实上,删除 _PAD 并添加前缀 FMT_ 似乎只是这样:

set bob=FMT_%1

如果你想把文件名和扩展名分开,不要乱计算字符;有一个内置方法(在 for /? 中描述):

echo Filename=%~n1
echo Extension=%~x1
echo resulting file="FMT_%~1"
REM without _PAD, following with _PAD
set filename="FMT_%~n1_PAD%~x1"

如果确实需要删除 _PAD(正如 Chris 已经指出的,您在代码中明确添加了它),只需将 _PAD. 替换为 .

set filename=%filename:_PAD.=.%