Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如果语句不工作,则在内部设置批处理脚本_Batch File - Fatal编程技术网

Batch file 如果语句不工作,则在内部设置批处理脚本

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

我正在尝试使用带有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 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%