繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM