批处理脚本中日期拼接使用点号失效、转义字符无效问题求助
问题原因
批处理中拼接变量使用点号不需要任何转义,你遇到的报错是以下几个错误共同导致的:
- 原有代码的时间拼接部分多了一个多余的转义符
^,该字符属于文件名非法字符,会导致路径解析失败 - 你在定义路径变量时将引号写入了变量值,后续拼接时又重复加引号,导致生成的路径格式错误,带点号时解析冲突更明显
- 代码中存在无效跳转
goto eof,你并未定义:eof标签,执行后会直接抛出错误,干扰你判断根因
解决步骤
- 调整变量定义规则,不要把引号写入变量值,后续使用时统一包裹引号,避免拼接混乱
- 修正TODAY变量的定义,直接使用点号作为分隔符,删掉多余的
^字符 - 修正rar命令的路径写法,统一用引号包裹完整输出路径
- 修正跳转标签错误,避免无效跳转
修正后的完整代码
@echo off setlocal REM --------------------- Folder to compress ----------------------------------- set dir=D:\project\my-project\ set name=my-project set backup=D:\backup\project\ set folder=D:\dev\project\my-project REM 如果不需要在压缩包里保留外层文件夹,在folder参数的路径末尾加"\"即可 REM ---------------------------------------------------------------------------- REM ---------------------- WinRAR 程序路径 ------------------------------------ set path=C:\Progra~2\WinRAR\WinRAR.Exe;%path% REM 路径与实际安装位置不符可自行修改 REM ---------------------------------------------------------------------------- REM 切换工作目录到指定路径 cd "%dir%" REM 小时数小于10时补前导0 SET hr=%time:~0,2% IF %hr% lss 10 SET hr=0%hr:~1,1% REM 日期格式:年.月.日_时分秒 Set TODAY=%date:~10,4%.%date:~7,2%.%date:~4,2%_%hr%%time:~3,2%%time:~6,2%%time:~9,2% echo 待压缩的RAR文件源文件夹: echo %folder% echo. echo. echo 即将把目录和子目录下所有文件压缩为单个归档文件 echo. echo. echo 压缩文件名将自动拼接当前日期时间 rar a -r -ep1 "%backup%\%name%_%today%.rar" "%folder%" pause goto end echo. echo "任务已完成" echo. REM --------------------------- 退出 ----------------------------------------- :end EXIT /B 0
内容的提问来源于stack exchange,提问作者user17186249
相关产品推荐
相关产品推荐

