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

时间:2015-01-08 16:23:38

标签: windows batch-file cmd

我正在尝试在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

B中。在文件名的开头添加FMT_并在.dat:

之前删除_PAD
FMT_abcdc2evv.dat

FMT_abcdefgh33ij_3737.dat

附录: 只有一个参数传递给bat文件:path + file name。

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%

3 个答案:

答案 0 :(得分:1)

如果你想删除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%

答案 1 :(得分:1)

我不知道我是否遗漏了一些明显的东西 - 目前还不清楚这个剧本的输入是什么。

然而,之前添加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

答案 2 :(得分:0)

如果你想将文件名与扩展名分开,不要乱用计数字符;有一个内置方法(在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.=.%