Windows命令行脚本修改需求:添加用户日期输入提示功能
Windows命令行脚本修改需求:添加用户日期输入提示功能
没问题,我来帮你调整这个脚本,让它既能保留命令行传参的便捷性,又能在用户没提供参数时主动提示输入日期,而且必须拿到有效的日期值才会执行后续的文件操作,避免原来那种无参数也乱跑的情况。
修改后的完整脚本
@echo off cls :: 先尝试获取命令行参数 set "myParam=%~1" :: 如果没有命令行参数,提示用户输入日期 if not defined myParam ( :PROMPT_DATE set /p "myParam=请输入文件日期(例如:20240520):" :: 如果用户没输入直接回车,再次提示 if not defined myParam ( echo 错误:日期不能为空,请重新输入! goto PROMPT_DATE ) ) echo 将使用日期:%myParam% echo. :: 执行文件移动和重命名操作 move .\OTE_OTEAS23_CUNY_ENGL_ENRL*.CSV OTEAS-Stdnts_w_CUNY_ENGL_Enrl\OTE_OTEAS23_CUNY_ENGL_ENRL_%myParam%.csv move OTE_OTEAS23_CUNY_MATH_ENR*.csv .\OTEAS-Stdnts_w_CUNY_MATH_Enrl\OTE_OTEAS23_CUNY_MATH_ENR_%myParam%.csv move OTE_OTEAS23_EXT_DEG*.csv .\OTEAS-Ext_Degree_and_ENG_flag\OTE_OTEAS23_EXT_DEG_%myParam%.csv move OTE_OTEAS23_EXT_ED_ENG_COL*.csv .\OTEAS-Ext_Education_Eng_Col_Lv\OTE_OTEAS23_EXT_ED_ENG_COL_%myParam%.csv move OTE_OTEAS23_EXT_ED_MTH_HS*.csv .\OTEAS-Extern_Education_Math_HS\OTE_OTEAS23_EXT_ED_MTH_HS_%myParam%.csv move OTE_OTEAS23_SRVC_IND_ACT*.csv .\OTEAS-Active_Service_Ind\OTE_OTEAS23_SRVC_IND_ACT_%myParam%.csv move OTE_OTEAS23_STDNT_CUNY_DEGR*.csv .\OTEAS-CUNY_Awarded_Degrees\OTE_OTEAS23_STDNT_CUNY_DEGR_%myParam%.csv move OTE_OTEAS23_STDNT_GRP_HIST*.csv .\OTEAS-Student_Group_Recs\OTE_OTEAS23_STDNT_GRP_HIST_%myParam%.csv move OTE_OTEAS23_STDNT_LIST*.csv .\OTEAS-Admit_RDEF_Student_List\OTE_OTEAS23_STDNT_LIST_%myParam%.csv move OTE_OTEAS23_STDNT_TEST_REC*.csv .\OTEAS-CF_Student_Test_Recs\OTE_OTEAS23_STDNT_TEST_REC_%myParam%.csv move OTE_OTEAS23_TRNS_CREDS*.csv .\OTEAS-Transfer_Credit_ENG_MTH\OTE_OTEAS23_TRNS_CREDS_%myParam%.csv echo. echo 文件操作完成! pause
关键修改点说明
- 开头加了
@echo off来屏蔽命令本身的输出,让脚本运行更整洁 - 增加了参数检查逻辑:如果
%~1为空,就进入循环提示用户输入,直到用户输入了有效内容 - 加入了友好提示:显示要使用的日期,操作完成后提示并暂停(方便用户看到结果)
- 保留了原有的命令行传参功能:如果用户直接在命令行后跟日期(比如
script.bat 20240520),脚本会直接使用这个参数,不会触发输入提示
这样调整后,脚本的容错性和易用性都提升了,再也不用担心没传参数就执行操作的问题啦!
备注:内容来源于stack exchange,提问作者psycoperl
相关产品推荐
相关产品推荐

