[英]How to change the output file name in a bat file?
我正在尝试在bat文件中更改输出文件名fOut,但到目前为止还没有运气。
我正在Windows 7上进行开发,并将代码部署到Windows 2003 Server。
代码如下:
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以获得以下文件名?
A.在文件名的开头添加FMT_:
FMT_abcdc2evv_PAD.dat
FMT_abcdefgh33ij_3737_PAD.dat
B.在文件名的开头添加FMT_并在.dat之前删除_PAD:
FMT_abcdc2evv.dat
FMT_abcdefgh33ij_3737.dat
附录:bat文件中仅传递了一个参数:path +文件名。
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%
如果要删除护垫,只需将其从分配声明中取出,您可以:
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.=.%
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.