创建批处理文件:复制文件并在文件名后追加文件版本
批处理文件实现带版本号的文件复制解决方案
你的原脚本存在核心问题:错误使用set /p命令,set /p用于读取用户输入,无法捕获命令执行结果,因此无法正确获取文件版本号。以下是修正后的可行脚本:
@echo off setlocal enabledelayedexpansion :: 定义目标文件路径 set "target_file=C:\Users\user\Desktop\Test\GCM.exe" :: 提取文件的基础信息(文件名、后缀、所在目录) for %%f in ("%target_file%") do ( set "file_name=%%~nf" set "file_ext=%%~xf" set "file_dir=%%~df%%~pf" ) :: 通过WMIC获取文件版本号,过滤无效输出 for /f "tokens=2 delims==" %%v in ('wmic datafile where name^="%target_file:\=\\%" get Version /value ^| findstr "^Version="') do ( set "file_version=%%v" ) :: 执行复制操作,生成带版本号的新文件 copy "%target_file%" "%file_dir%%file_name%-%file_version%%file_ext%" pause endlocal
关键说明:
setlocal enabledelayedexpansion:启用延迟变量扩展,确保循环内的变量赋值能被正确读取- 文件路径处理:WMIC要求路径中的反斜杠转义为
\\,同时where子句的等号前需加^转义,避免命令解析错误 - 版本号提取:用
findstr "^Version="过滤WMIC输出的空行和冗余内容,只保留有效版本号 - 文件名拼接:自动提取原文件的名称、后缀和目录,无需硬编码新文件路径
内容的提问来源于stack exchange,提问作者user22264282
相关产品推荐
相关产品推荐

