Batch file 使用同一文件夹中的其他文件名重命名文件名

Batch file 使用同一文件夹中的其他文件名重命名文件名,batch-file,filenames,rename,copy-paste,Batch File,Filenames,Rename,Copy Paste,我当前有一个windows文件夹,其中只有两个文件: 假期.jpg 和 夏令营 我想使用.jpg扩展名之前的文本在vacation.avi中重命名summer.avi 例如,如果我有另一个包含christmas.jpg和summer.avi的文件夹,.avi文件将重命名为christmas.avi 任何帮助都将不胜感激 这应该会让人担忧,尽管我还没有测试过: @echo off for %%i in (*.jpg) do set src=%%i ren *.avi %src% 您可以使用~n参

我当前有一个windows文件夹,其中只有两个文件: 假期.jpg 和 夏令营

我想使用.jpg扩展名之前的文本在vacation.avi中重命名summer.avi

例如,如果我有另一个包含christmas.jpg和summer.avi的文件夹,.avi文件将重命名为christmas.avi


任何帮助都将不胜感激

这应该会让人担忧,尽管我还没有测试过:

@echo off
for %%i in (*.jpg) do set src=%%i
ren *.avi %src%

您可以使用
~n
参数扩展名仅获取文件名而不获取扩展名。脚本需要与jpg和avi位于同一目录中,但是如果您想在多个目录上运行它,可以将整个脚本包装在第二个
for
循环中

@echo off
setlocal enabledelayedexpansion

:: This assumes there is only one avi file in the folder
for /F %%A in ('dir /b *.jpg') do (
    set basename=%%~nA
    ren *.avi !basename!.avi
)

这将把avi文件重命名为与jpg相同的文件名,包括扩展名。幸运的是,批处理不会允许这种情况发生,因为具有该名称的文件已经存在,所以这根本不起任何作用。您好,谢谢您的回复。您的代码做了一些事情,但不完全是它应该做的。它将文件更改为“.avi”,因此在扩展名之前不会显示任何内容。@Azaemol-我犯了一个新手错误,忘记启用延迟扩展来访问我在代码块中设置的变量。我编辑了我的代码;现在试试看。