Batch file 如果语句不工作,则在内部设置批处理脚本
我正在尝试使用带有7zip的批处理脚本压缩文件夹 但如果语句不工作,则在内部设置函数;( 文件夹结构:Batch file 如果语句不工作,则在内部设置批处理脚本,batch-file,Batch File,我正在尝试使用带有7zip的批处理脚本压缩文件夹 但如果语句不工作,则在内部设置函数;( 文件夹结构: 2000/ 01/ 02/ 03/ 04/ 05/ 06/ 07/ 08/ 09/ 10/ 11/ 12/ 2001/ 01/ 02/ 03/ 04/ 05/ 06/ 07/ ... 这是我的密码: @ECHO OFF setlocal echo %date% set lo
2000/
01/
02/
03/
04/
05/
06/
07/
08/
09/
10/
11/
12/
2001/
01/
02/
03/
04/
05/
06/
07/
...
这是我的密码:
@ECHO OFF
setlocal
echo %date%
set logMonth=%date:~4,2%
set logDay=%date:~7,2%
set logYear=%date:~10,4%
set path="C:\Program Files\7-Zip\";%path%
if %logMonth% EQU 01 (
set logMonth=12
set /a logYear=%logYear%-1
7z a -tzip c:\%logYear%%logMonth%.zip C:\files\v2-output\%logYear%\%logMonth%
) ELSE (
rem 1 saraas busad sar bol tuhain onii umnuh sariin folderiig ziplene
set /a logMonth=%logMonth%-1
7z a -tzip c:\%logYear%%logMonth%.zip C:\files\v2-output\%logYear%\%logMonth%
)
endlocal
如果当前月份相当于01压缩上一年的上一个月,则压缩上一年的上一个月。帮助大家!在块语句中
(括号内的一系列语句)
,整个块被解析并执行。块内的任何%var%
都将在块被解析时替换为该变量的值,然后执行块
因此,在遇到IF
时,将使用%variables%
的值执行IF(somethingelse)
克服此问题的两种常见方法是:1)使用setlocal enabledelayedexpansion
和!瓦尔
代替%var%
访问var
的更改值,或2)调用子例程使用更改的值执行进一步处理
请注意,set/a
执行的任何计算都假定以0
开头的任何字符串都是一个octall常量,因此set/a var+=%month%
将为month=08(八月)或09(九月)生成一个错误,因为8
和9
不是有效的octall字符
Set/a抑制前导零,因此Set/a var=03
将var
设置为3
,而不是03
。通常,要使用带前导零的十进制值进行计算,您可以使用set/a value=1%value%-1
,然后使用[或将value
设置为]%value:~1%
所以,试试看
如果%logMonth%eq 01(
设置/a对数月=112
设置/a日志年=%logYear%1
)否则(
rem 1 Saras busad sar bol tuhain onii umnuh sariin Folderig ziplene
设置/a日志月=1%logMonth%-1
)
设置logmonth=%logmonth:~1%
7z a-tzip c:\%logYear%%logMonth%.zip c:\files\v2 output\%logYear%\%logMonth%