我正在尝试在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:
之前删除_PADFMT_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%
答案 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.=.%