使用Windows批处理脚本更改文件名(保留扩展名)?

时间:2016-02-16 09:04:30

标签: windows batch-file rename file-extension

我想更改保留扩展名的文件名。条件是如果时间戳失败可能是因为TSA不可用,那么我想将文件标记为' unsigned'

已找到签名代码here

情景是:

批处理文件: sign.bat

arg2: file1.exe

预期产量 如果时间戳失败,则需要将' file1.exe' 标记为' file1_unsigned.exe'
在所有搜索之后,我做了什么,

echo Timestamping failed , marking the file as unsigned. 
set file_name=%2
set unsigned_file_name=%file_name:.exe=_unsigned.exe%
ren %file_name% %newfilename%

通过在原始文件中添加字符串来保留文件扩展名。

有更好的方法吗?可能正在使用模式匹配?

2 个答案:

答案 0 :(得分:0)

您也可以使用FOR /F来实现此目的。看看这段代码:

@echo off
for /f %%f in ("something.txt") do (
    echo %%~nf
    echo %%~xf
)

这将输出:

  

东西

     

.EXE

所以在你的情况下你可以这样做:

echo Timestamping failed, marking the file as unsigned. 
for /f %%f in ("%2") do (
    ren %%f %%~nf_unsigned%%~xf
)

~n返回名称,并~x文件的扩展名。此构造可能会更长,但它将完全适用于任何文件,而不仅仅适用于.exe

答案 1 :(得分:0)

你可以直接做:

 echo Timestamping failed , marking the file as unsigned.
 echo ren "%2" "%~n2_unsigned%~x2"