批处理如何删除存储在字符串%变量%中的文件扩展名?

时间:2015-07-16 16:03:44

标签: batch-file

我有一个名为abcd.txt的文件,我想使用字符串变量将文件重命名为abcd_copy.txt。我已经尝试了ren命令,但它只给了我abcd.txt_copy.txt
我的方法是删除%variable%中的.txt然后使用 ren abcd.txt %varialbe%"_copy.txt"重命名该文件。有问题的代码如下所示:

set variable=abcd.txt
ren *.txt %variable%"_copy.txt"

有什么建议吗? TIA ^^

3 个答案:

答案 0 :(得分:2)

我建议使用FOR循环和参数替换。如果文件夹中有多个文件,FOR循环也很好。

您想要使用%~n和%~x的组合。 %~n将返回没有扩展名的FILENAME,%~x将返回扩展名。

示例:

for %i in (*.txt) do echo Filename: %~ni Extension: %~xi

您的需求似乎是:

set variable=abcd.txt
for %i in (%variable%) do ren %i %~ni_copy%~xi 

直接执行

  

ren abcd.txt abcd_copy.txt

请记住,在批处理脚本中使用时需要加倍%%。

从CMD提示尝试:"帮助"并向下翻页。您会看到很多选项

请参阅此链接以获取更多详细信息,包括其他参数... http://ss64.com/nt/syntax-args.html

你也可以在这里找到一些有用的东西 - 它讨论了字符串subs。 http://ss64.com/nt/syntax-replace.html

答案 1 :(得分:1)

如果您确定该扩展名是最后4个字符(包括该点),您可以执行以下操作:

%variable:~0,-4%

-4表示最后4位数字将被截断。 所以,在你的情况下,它将是:

ren *.txt "%variable:~0,-4%_copy.txt"

答案 2 :(得分:0)

未经测试:

set variable=abcd.txt
for %%# in ("%variable%") do ren "%%~#" "%%~n#_copy%%~x#"