批处理脚本求助:删除重复行并使用变量
批处理脚本实现带日期后缀的文件去重(保留原文件)
以下是修改后的脚本,已加入变量支持,可自动提取输入文件信息并生成带当前日期后缀的去重文件,同时保留原文件:
@ECHO ON :: 支持命令行传参,若不传参则使用固定路径 SET "InputFile=%~1" IF NOT DEFINED InputFile SET "InputFile=C:\FM\FM_ADT_20221003.txt" :: 获取当前日期(格式:YYYYMMDD),用PowerShell保证跨区域格式一致 FOR /F "delims=" %%A IN ('PowerShell -Command "Get-Date -Format 'yyyyMMdd'"') DO SET "CurrentDate=%%A" :: 拆分输入文件的路径、文件名、扩展名 SET "FileDir=%~dpInputFile%" SET "FileName=%~nInputFile%" SET "FileExt=%~xInputFile%" :: 生成输出文件名:原文件名 + (当前日期) + 扩展名 SET "OutputFile=%FileDir%%FileName%(%CurrentDate%)%FileExt%" :: 生成临时PowerShell脚本 SET "PSScript=%Temp%\~tmpRemoveDupe.ps1" IF EXIST "%PSScript%" DEL /Q /F "%PSScript%" ECHO Get-Content "%InputFile%" ^| Sort-Object ^| Get-Unique ^> "%OutputFile%" >> "%PSScript%" :: 执行PowerShell脚本去重 SET "PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0" CD /D "%PowerShellDir%" Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'" :: 删除临时脚本(可选) DEL /Q /F "%PSScript%" GOTO EOF
关键修改说明:
- 输入文件灵活配置:支持通过命令行传参(比如运行脚本时输入
脚本名.bat C:\FM\FM_ADT_20221003.txt),若不传参则使用预设的固定路径 - 统一日期格式:借助PowerShell获取
YYYYMMDD格式的当前日期,避免系统区域设置导致的日期格式差异 - 自动拆分文件信息:用批处理内置变量
%~dp(路径)、%~n(文件名)、%~x(扩展名)拆分输入文件,无需手动修改文件名 - 自动生成输出路径:基于原文件路径和当前日期拼接输出文件名,确保新文件和原文件在同一目录下
- 可选清理临时文件:脚本末尾添加了删除临时PowerShell脚本的命令,避免临时文件堆积
内容的提问来源于stack exchange,提问作者Anita
相关产品推荐
相关产品推荐

