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

Batch file 批处理如何删除存储在字符串%variable%中的文件扩展名?,batch-file,Batch File,我得到了名为abcd.txt的文件,我想使用字符串变量将该文件重命名为abcd\u copy.txt。我尝试了ren命令,但它只给了我abcd.txt\u copy.txt 我的方法是删除%variable%中的.txt,然后使用 ren abcd.txt%varialbe%“\u copy.txt”重命名文件。问题代码如下所示: set variable=abcd.txt ren *.txt %variable%"_copy.txt" 有什么建议吗? TIA^^如果您确定扩展名是最后4个字符

我得到了名为abcd.txt的文件,我想使用字符串变量将该文件重命名为abcd\u copy.txt。我尝试了
ren
命令,但它只给了我abcd.txt\u copy.txt
我的方法是删除%variable%中的.txt,然后使用
ren abcd.txt%varialbe%“\u copy.txt”
重命名文件。问题代码如下所示:

set variable=abcd.txt
ren *.txt %variable%"_copy.txt"
有什么建议吗?
TIA^^

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

%variable:~0,-4%
-4表示最后4位数字将被截断。 因此,在您的情况下,它将是:

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

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

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

您希望使用%%n和%%x的组合~n将返回不带扩展名的文件名,%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 xiao.txt xiao\u copy.txt

请记住,在批处理脚本中使用时,您需要双%%

在CMD提示符中,尝试“帮助”并向下翻页。你会看到很多选择

有关包括其他参数的更多详细信息,请参阅此链接。。。

您可能还会在这里发现一些有用的东西—它讨论了字符串sub。

您的ans也很棒,提前感谢您提供了详细的教程和建议,帮助您更好地学习批处理脚本编程。Down and dirty解决了所问的具体问题。唯一的风险(正如指出的)是它假定文件扩展名的长度。但是,如果文件是.html,它将无法工作。我建议使用内置变量编辑%%n和%%x来获取文件名和扩展名。